# API Reference <a name="API Reference" id="api-reference"></a>

## Constructs <a name="Constructs" id="Constructs"></a>

### CdkGraph <a name="CdkGraph" id="@aws-prototyping-sdk/cdk-graph.CdkGraph"></a>

CdkGraph construct is the cdk-graph framework controller that is responsible for computing the graph, storing serialized graph, and instrumenting plugins per the plugin contract.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.CdkGraph(
  root: Construct,
  plugins: typing.List[ICdkGraphPlugin] = None
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.root">root</a></code> | <code>constructs.Construct</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.plugins">plugins</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]</code> | List of plugins to extends the graph. |

---

##### `root`<sup>Required</sup> <a name="root" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.root"></a>

- *Type:* constructs.Construct

---

##### `plugins`<sup>Optional</sup> <a name="plugins" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.plugins"></a>

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]

List of plugins to extends the graph.

Plugins are invoked at each phases in fifo order.

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.toString">to_string</a></code> | Returns a string representation of this construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.report">report</a></code> | Asynchronous report generation. This operation enables running expensive and non-synchronous report generation by plugins post synthesis. |

---

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.toString"></a>

```python
def to_string() -> str
```

Returns a string representation of this construct.

##### `report` <a name="report" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.report"></a>

```python
def report() -> None
```

Asynchronous report generation. This operation enables running expensive and non-synchronous report generation by plugins post synthesis.

If a given plugin requires performing asynchronous operations or is general expensive, it should
utilize `report` rather than `synthesize`.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.isConstruct">is_construct</a></code> | Checks if `x` is a construct. |

---

##### `is_construct` <a name="is_construct" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.isConstruct"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.CdkGraph.is_construct(
  x: typing.Any
)
```

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct`
instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on
disk are seen as independent, completely different libraries. As a
consequence, the class `Construct` in each copy of the `constructs` library
is seen as a different class, and an instance of one class will not test as
`instanceof` the other class. `npm install` will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the `constructs`
library can be accidentally installed, and `instanceof` will behave
unpredictably. It is safest to avoid using `instanceof`, and using
this type-testing method instead.

###### `x`<sup>Required</sup> <a name="x" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.isConstruct.parameter.x"></a>

- *Type:* typing.Any

Any object.

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.config">config</a></code> | <code>typing.Mapping[typing.Any]</code> | Config. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.plugins">plugins</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]</code> | List of plugins registered with this instance. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.root">root</a></code> | <code>constructs.Construct</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.graphContext">graph_context</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext">CdkGraphContext</a></code> | Get the context for the graph instance. |

---

##### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.node"></a>

```python
node: Node
```

- *Type:* constructs.Node

The tree node.

---

##### `config`<sup>Required</sup> <a name="config" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.config"></a>

```python
config: typing.Mapping[typing.Any]
```

- *Type:* typing.Mapping[typing.Any]

Config.

---

##### `plugins`<sup>Required</sup> <a name="plugins" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.plugins"></a>

```python
plugins: typing.List[ICdkGraphPlugin]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]

List of plugins registered with this instance.

---

##### `root`<sup>Required</sup> <a name="root" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.root"></a>

```python
root: Construct
```

- *Type:* constructs.Construct

---

##### `graph_context`<sup>Optional</sup> <a name="graph_context" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.graphContext"></a>

```python
graph_context: CdkGraphContext
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext">CdkGraphContext</a>

Get the context for the graph instance.

This will be `undefined` before construct synthesis has initiated.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.ID">ID</a></code> | <code>str</code> | Fixed CdkGraph construct id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.VERSION">VERSION</a></code> | <code>str</code> | Current CdkGraph semantic version. |

---

##### `ID`<sup>Required</sup> <a name="ID" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.ID"></a>

```python
ID: str
```

- *Type:* str

Fixed CdkGraph construct id.

---

##### `VERSION`<sup>Required</sup> <a name="VERSION" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.VERSION"></a>

```python
VERSION: str
```

- *Type:* str

Current CdkGraph semantic version.

---

## Structs <a name="Structs" id="Structs"></a>

### CdkGraphArtifact <a name="CdkGraphArtifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact"></a>

CdkGraph artifact definition.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.CdkGraphArtifact(
  filename: str,
  filepath: str,
  id: str,
  source: str,
  description: str = None
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filename">filename</a></code> | <code>str</code> | Filename of the artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filepath">filepath</a></code> | <code>str</code> | Full path where artifact is stored. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.id">id</a></code> | <code>str</code> | The unique type of the artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.source">source</a></code> | <code>str</code> | The source of the artifact (such as plugin, or core system, etc). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.description">description</a></code> | <code>str</code> | Description of artifact. |

---

##### `filename`<sup>Required</sup> <a name="filename" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filename"></a>

```python
filename: str
```

- *Type:* str

Filename of the artifact.

---

##### `filepath`<sup>Required</sup> <a name="filepath" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filepath"></a>

```python
filepath: str
```

- *Type:* str

Full path where artifact is stored.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.id"></a>

```python
id: str
```

- *Type:* str

The unique type of the artifact.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.source"></a>

```python
source: str
```

- *Type:* str

The source of the artifact (such as plugin, or core system, etc).

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.description"></a>

```python
description: str
```

- *Type:* str

Description of artifact.

---

### ConstructInfo <a name="ConstructInfo" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo"></a>

Source information on a construct (class fqn and version).

> [https://github.com/aws/aws-cdk/blob/cea1039e3664fdfa89c6f00cdaeb1a0185a12678/packages/%40aws-cdk/core/lib/private/runtime-info.ts#L22](https://github.com/aws/aws-cdk/blob/cea1039e3664fdfa89c6f00cdaeb1a0185a12678/packages/%40aws-cdk/core/lib/private/runtime-info.ts#L22)

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ConstructInfo(
  fqn: str,
  version: str
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.fqn">fqn</a></code> | <code>str</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.version">version</a></code> | <code>str</code> | *No description.* |

---

##### `fqn`<sup>Required</sup> <a name="fqn" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.fqn"></a>

```python
fqn: str
```

- *Type:* str

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.version"></a>

```python
version: str
```

- *Type:* str

---

### ICdkGraphProps <a name="ICdkGraphProps" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphProps"></a>

{@link CdkGraph} props.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphProps.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ICdkGraphProps(
  plugins: typing.List[ICdkGraphPlugin] = None
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphProps.property.plugins">plugins</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]</code> | List of plugins to extends the graph. |

---

##### `plugins`<sup>Optional</sup> <a name="plugins" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphProps.property.plugins"></a>

```python
plugins: typing.List[ICdkGraphPlugin]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]

List of plugins to extends the graph.

Plugins are invoked at each phases in fifo order.

---

### IGraphFilterPlanFocusConfig <a name="IGraphFilterPlanFocusConfig" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig"></a>

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.IGraphFilterPlanFocusConfig(
  node: typing.Union[Node, IFilterFocusCallback],
  no_hoist: bool = None
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.node">node</a></code> | <code>typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a>]</code> | The node or resolver to determine the node to focus on. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.noHoist">no_hoist</a></code> | <code>bool</code> | Indicates if ancestral containers are preserved (eg: Stages, Stack). |

---

##### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.node"></a>

```python
node: typing.Union[Node, IFilterFocusCallback]
```

- *Type:* typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a>]

The node or resolver to determine the node to focus on.

---

##### `no_hoist`<sup>Optional</sup> <a name="no_hoist" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.noHoist"></a>

```python
no_hoist: bool
```

- *Type:* bool
- *Default:* true

Indicates if ancestral containers are preserved (eg: Stages, Stack).

If `false`, the "focused node" will be hoisted to the graph root and all ancestors will be pruned.
If `true`, the "focused" will be left in-place, while all siblings and non-scope ancestors will be pruned.

---

### InferredNodeProps <a name="InferredNodeProps" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps"></a>

Inferred node props.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.InferredNodeProps(
  uuid: str,
  attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]] = None,
  flags: typing.List[FlagEnum] = None,
  metadata: typing.List[MetadataEntry] = None,
  tags: typing.Mapping[str] = None,
  dependencies: typing.List[str],
  unresolved_references: typing.List[SGUnresolvedReference],
  cfn_type: str = None,
  construct_info: ConstructInfo = None,
  logical_id: str = None
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.dependencies">dependencies</a></code> | <code>typing.List[str]</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.unresolvedReferences">unresolved_references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference">SGUnresolvedReference</a>]</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | *No description.* |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.dependencies"></a>

```python
dependencies: typing.List[str]
```

- *Type:* typing.List[str]

---

##### `unresolved_references`<sup>Required</sup> <a name="unresolved_references" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.unresolvedReferences"></a>

```python
unresolved_references: typing.List[SGUnresolvedReference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference">SGUnresolvedReference</a>]

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

---

### PlainObject <a name="PlainObject" id="@aws-prototyping-sdk/cdk-graph.PlainObject"></a>

Serializable plain object value (JSII supported).

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.PlainObject.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.PlainObject()
```


### SGEdge <a name="SGEdge" id="@aws-prototyping-sdk/cdk-graph.SGEdge"></a>

Serializable graph edge entity.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGEdge.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.SGEdge(
  uuid: str,
  attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]] = None,
  flags: typing.List[FlagEnum] = None,
  metadata: typing.List[MetadataEntry] = None,
  tags: typing.Mapping[str] = None,
  direction: EdgeDirectionEnum,
  edge_type: EdgeTypeEnum,
  source: str,
  target: str
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.edgeType">edge_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.source">source</a></code> | <code>str</code> | UUID of edge **source**  node (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.target">target</a></code> | <code>str</code> | UUID of edge **target**  node (head). |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.direction"></a>

```python
direction: EdgeDirectionEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edge_type`<sup>Required</sup> <a name="edge_type" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.edgeType"></a>

```python
edge_type: EdgeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.source"></a>

```python
source: str
```

- *Type:* str

UUID of edge **source**  node (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.target"></a>

```python
target: str
```

- *Type:* str

UUID of edge **target**  node (head).

---

### SGEntity <a name="SGEntity" id="@aws-prototyping-sdk/cdk-graph.SGEntity"></a>

Serializable graph entity.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGEntity.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.SGEntity(
  uuid: str,
  attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]] = None,
  flags: typing.List[FlagEnum] = None,
  metadata: typing.List[MetadataEntry] = None,
  tags: typing.Mapping[str] = None
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Serializable entity tags. |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

### SGGraphStore <a name="SGGraphStore" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore"></a>

Serializable graph store.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.SGGraphStore(
  edges: typing.List[SGEdge],
  tree: SGNode,
  version: str
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.edges">edges</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.SGEdge">SGEdge</a>]</code> | List of edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.tree">tree</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a></code> | Node tree. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.version">version</a></code> | <code>str</code> | Store version. |

---

##### `edges`<sup>Required</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.edges"></a>

```python
edges: typing.List[SGEdge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.SGEdge">SGEdge</a>]

List of edges.

---

##### `tree`<sup>Required</sup> <a name="tree" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.tree"></a>

```python
tree: SGNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>

Node tree.

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.version"></a>

```python
version: str
```

- *Type:* str

Store version.

---

### SGNode <a name="SGNode" id="@aws-prototyping-sdk/cdk-graph.SGNode"></a>

Serializable graph node entity.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.SGNode(
  uuid: str,
  attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]] = None,
  flags: typing.List[FlagEnum] = None,
  metadata: typing.List[MetadataEntry] = None,
  tags: typing.Mapping[str] = None,
  id: str,
  node_type: NodeTypeEnum,
  path: str,
  cfn_type: str = None,
  children: typing.Mapping[SGNode] = None,
  construct_info: ConstructInfo = None,
  edges: typing.List[str] = None,
  logical_id: str = None,
  parent: str = None,
  stack: str = None
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.id">id</a></code> | <code>str</code> | Node id within parent (unique only between parent child nodes). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Node type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.path">path</a></code> | <code>str</code> | Node path. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.cfnType">cfn_type</a></code> | <code>str</code> | CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.children">children</a></code> | <code>typing.Mapping[<a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>]</code> | Child node record. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.edges">edges</a></code> | <code>typing.List[str]</code> | List of edge UUIDs where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.parent">parent</a></code> | <code>str</code> | UUID of node parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.stack">stack</a></code> | <code>str</code> | UUID of node stack. |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id within parent (unique only between parent child nodes).

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Node type.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.path"></a>

```python
path: str
```

- *Type:* str

Node path.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

CloudFormation resource type for this node.

---

##### `children`<sup>Optional</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.children"></a>

```python
children: typing.Mapping[SGNode]
```

- *Type:* typing.Mapping[<a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>]

Child node record.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `edges`<sup>Optional</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.edges"></a>

```python
edges: typing.List[str]
```

- *Type:* typing.List[str]

List of edge UUIDs where this node is the **source**.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.parent"></a>

```python
parent: str
```

- *Type:* str

UUID of node parent.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.stack"></a>

```python
stack: str
```

- *Type:* str

UUID of node stack.

---

### SGUnresolvedReference <a name="SGUnresolvedReference" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference"></a>

Unresolved reference struct.

During graph computation references are unresolved and stored in this struct.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.SGUnresolvedReference(
  reference_type: ReferenceTypeEnum,
  source: str,
  target: str,
  value: typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]] = None
)
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.referenceType">reference_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.source">source</a></code> | <code>str</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.target">target</a></code> | <code>str</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.value">value</a></code> | <code>typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]</code> | *No description.* |

---

##### `reference_type`<sup>Required</sup> <a name="reference_type" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.referenceType"></a>

```python
reference_type: ReferenceTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.source"></a>

```python
source: str
```

- *Type:* str

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.target"></a>

```python
target: str
```

- *Type:* str

---

##### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.value"></a>

```python
value: typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

- *Type:* typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]

---

## Classes <a name="Classes" id="Classes"></a>

### AppNode <a name="AppNode" id="@aws-prototyping-sdk/cdk-graph.AppNode"></a>

AppNode defines a cdk App.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.AppNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AppNode(
  props: IAppNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.AppNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.toString">to_string</a></code> | Get string representation of this node. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.AppNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AppNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.AppNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.AppNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.AppNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

Indicates that this node must not have references.

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.AppNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.AppNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.AppNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AppNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.AppNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AppNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.AppNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.AppNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.AppNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.AppNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.AppNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.AppNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.AppNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.AppNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.AppNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.AppNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isAppNode">is_app_node</a></code> | Indicates if node is a {@link AppNode}. |

---

##### `is_app_node` <a name="is_app_node" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAppNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AppNode.is_app_node(
  node: Node
)
```

Indicates if node is a {@link AppNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAppNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.PATH">PATH</a></code> | <code>str</code> | Fixed path of the App. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.UUID">UUID</a></code> | <code>str</code> | Fixed UUID for App node. |

---

##### `PATH`<sup>Required</sup> <a name="PATH" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.PATH"></a>

```python
PATH: str
```

- *Type:* str

Fixed path of the App.

---

##### `UUID`<sup>Required</sup> <a name="UUID" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.UUID"></a>

```python
UUID: str
```

- *Type:* str

Fixed UUID for App node.

---

### AttributeReference <a name="AttributeReference" id="@aws-prototyping-sdk/cdk-graph.AttributeReference"></a>

Attribute type reference edge.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AttributeReference(
  props: IAttributeReferenceProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDestroy">mutate_destroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isEquivalent">is_equivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateConsume">mutate_consume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDirection">mutate_direction</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateSource">mutate_source</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateTarget">mutate_target</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.toString">to_string</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveChain">resolve_chain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveTargets">resolve_targets</a></code> | Resolve targets by following potential edge chain. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDestroy"></a>

```python
def mutate_destroy(
  _strict: bool = None
) -> None
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDestroy.parameter._strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag.parameter.value"></a>

- *Type:* str

---

##### `is_equivalent` <a name="is_equivalent" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isEquivalent"></a>

```python
def is_equivalent(
  edge: Edge
) -> bool
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_consume` <a name="mutate_consume" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateConsume"></a>

```python
def mutate_consume(
  edge: Edge
) -> None
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutate_direction` <a name="mutate_direction" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDirection"></a>

```python
def mutate_direction(
  direction: EdgeDirectionEnum
) -> None
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutate_source` <a name="mutate_source" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateSource"></a>

```python
def mutate_source(
  node: Node
) -> None
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_target` <a name="mutate_target" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateTarget"></a>

```python
def mutate_target(
  node: Node
) -> None
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.toString"></a>

```python
def to_string() -> str
```

Get string representation of this edge.

##### `resolve_chain` <a name="resolve_chain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveChain"></a>

```python
def resolve_chain() -> typing.List[typing.Any]
```

Resolve reference chain.

##### `resolve_targets` <a name="resolve_targets" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveTargets"></a>

```python
def resolve_targets() -> typing.List[Node]
```

Resolve targets by following potential edge chain.

> [{@link EdgeChain }]({@link EdgeChain })

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain">find_all_in_chain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain">find_in_chain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isRef">is_ref</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isReference">is_reference</a></code> | Indicates if edge is a {@link Reference}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isAtt">is_att</a></code> | Indicates if edge in an **Fn::GetAtt** {@link Reference}. |

---

##### `find_all_in_chain` <a name="find_all_in_chain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AttributeReference.find_all_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `find_in_chain` <a name="find_in_chain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AttributeReference.find_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `is_ref` <a name="is_ref" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isRef"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AttributeReference.is_ref(
  edge: Edge
)
```

Indicates if edge is a **Ref** based {@link Reference} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isRef.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `is_reference` <a name="is_reference" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isReference"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AttributeReference.is_reference(
  edge: Edge
)
```

Indicates if edge is a {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isReference.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `is_att` <a name="is_att" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isAtt"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.AttributeReference.is_att(
  edge: Edge
)
```

Indicates if edge in an **Fn::GetAtt** {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isAtt.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.edgeType">edge_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isClosed">is_closed</a></code> | <code>bool</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isCrossStack">is_cross_stack</a></code> | <code>bool</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.referenceType">reference_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Get type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.value">value</a></code> | <code>str</code> | Get the resolved attribute value. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.direction"></a>

```python
direction: EdgeDirectionEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edge_type`<sup>Required</sup> <a name="edge_type" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.edgeType"></a>

```python
edge_type: EdgeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `is_closed`<sup>Required</sup> <a name="is_closed" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isClosed"></a>

```python
is_closed: bool
```

- *Type:* bool

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `is_cross_stack`<sup>Required</sup> <a name="is_cross_stack" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isCrossStack"></a>

```python
is_cross_stack: bool
```

- *Type:* bool

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `reference_type`<sup>Required</sup> <a name="reference_type" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.referenceType"></a>

```python
reference_type: ReferenceTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Get type of reference.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.value"></a>

```python
value: str
```

- *Type:* str

Get the resolved attribute value.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_TYPE">ATT_TYPE</a></code> | <code>str</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.PREFIX">PREFIX</a></code> | <code>str</code> | Edge prefix to denote **Fn::GetAtt** type reference edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_VALUE">ATT_VALUE</a></code> | <code>str</code> | Attribute key for resolved value of attribute reference. |

---

##### `ATT_TYPE`<sup>Required</sup> <a name="ATT_TYPE" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_TYPE"></a>

```python
ATT_TYPE: str
```

- *Type:* str

Attribute defining the type of reference.

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.PREFIX"></a>

```python
PREFIX: str
```

- *Type:* str

Edge prefix to denote **Fn::GetAtt** type reference edge.

---

##### `ATT_VALUE`<sup>Required</sup> <a name="ATT_VALUE" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_VALUE"></a>

```python
ATT_VALUE: str
```

- *Type:* str

Attribute key for resolved value of attribute reference.

---

### BaseEntity <a name="BaseEntity" id="@aws-prototyping-sdk/cdk-graph.BaseEntity"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEntity">ISerializableEntity</a>

Base class for all store entities (Node and Edges).

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.BaseEntity(
  props: IBaseEntityProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.mutateDestroy">mutate_destroy</a></code> | Destroy the entity be removing all references and removing from store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag">set_tag</a></code> | Set tag. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroy the entity be removing all references and removing from store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.mutateDestroy.parameter.strict"></a>

- *Type:* bool

If `strict`, then entity must not have any references remaining when attempting to destroy.

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag.parameter.value"></a>

- *Type:* str

---


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---


### CdkGraphContext <a name="CdkGraphContext" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext"></a>

CdkGraph context.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.CdkGraphContext(
  store: Store,
  outdir: str
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.outdir">outdir</a></code> | <code>str</code> | *No description.* |

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.store"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

---

##### `outdir`<sup>Required</sup> <a name="outdir" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.outdir"></a>

- *Type:* str

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.getArtifact">get_artifact</a></code> | Get CdkGraph artifact by id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.hasArtifactFile">has_artifact_file</a></code> | Indicates if context has an artifact with *filename* defined. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact">log_artifact</a></code> | Logs an artifact entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact">write_artifact</a></code> | Writes artifact data to outdir and logs the entry. |

---

##### `get_artifact` <a name="get_artifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.getArtifact"></a>

```python
def get_artifact(
  id: str
) -> CdkGraphArtifact
```

Get CdkGraph artifact by id.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.getArtifact.parameter.id"></a>

- *Type:* str

---

##### `has_artifact_file` <a name="has_artifact_file" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.hasArtifactFile"></a>

```python
def has_artifact_file(
  filename: str
) -> bool
```

Indicates if context has an artifact with *filename* defined.

###### `filename`<sup>Required</sup> <a name="filename" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.hasArtifactFile.parameter.filename"></a>

- *Type:* str

---

##### `log_artifact` <a name="log_artifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact"></a>

```python
def log_artifact(
  source: typing.Union[CdkGraph, ICdkGraphPlugin],
  id: str,
  filepath: str,
  description: str = None
) -> CdkGraphArtifact
```

Logs an artifact entry.

In general this should not be called directly, as `writeArtifact` should be utilized
to perform writing and logging artifacts. However some plugins utilize other tools that generate the artifacts,
in which case the plugin would call this method to log the entry.

###### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.source"></a>

- *Type:* typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph">CdkGraph</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]

The source of the artifact, such as the name of plugin.

---

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.id"></a>

- *Type:* str

Unique id of the artifact.

---

###### `filepath`<sup>Required</sup> <a name="filepath" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.filepath"></a>

- *Type:* str

Full path where the artifact is stored.

---

###### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.description"></a>

- *Type:* str

Description of the artifact.

---

##### `write_artifact` <a name="write_artifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact"></a>

```python
def write_artifact(
  source: typing.Union[CdkGraph, ICdkGraphPlugin],
  id: str,
  filename: str,
  data: str,
  description: str = None
) -> CdkGraphArtifact
```

Writes artifact data to outdir and logs the entry.

###### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.source"></a>

- *Type:* typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph">CdkGraph</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>]

The source of the artifact, such as the name of plugin.

---

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.id"></a>

- *Type:* str

Unique id of the artifact.

---

###### `filename`<sup>Required</sup> <a name="filename" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.filename"></a>

- *Type:* str

Relative name of the file.

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.data"></a>

- *Type:* str

---

###### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.description"></a>

- *Type:* str

Description of the artifact.

---


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.artifacts">artifacts</a></code> | <code>typing.Mapping[<a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a>]</code> | Get record of all graph artifacts keyed by artifact id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.graphJson">graph_json</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a></code> | Get CdkGraph core `graph.json` artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.outdir">outdir</a></code> | <code>str</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | *No description.* |

---

##### `artifacts`<sup>Required</sup> <a name="artifacts" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.artifacts"></a>

```python
artifacts: typing.Mapping[CdkGraphArtifact]
```

- *Type:* typing.Mapping[<a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a>]

Get record of all graph artifacts keyed by artifact id.

---

##### `graph_json`<sup>Required</sup> <a name="graph_json" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.graphJson"></a>

```python
graph_json: CdkGraphArtifact
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a>

Get CdkGraph core `graph.json` artifact.

---

##### `outdir`<sup>Required</sup> <a name="outdir" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.outdir"></a>

```python
outdir: str
```

- *Type:* str

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

---


### CfnResourceNode <a name="CfnResourceNode" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode"></a>

CfnResourceNode defines an L1 cdk resource.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.CfnResourceNode(
  props: ICfnResourceNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.toString">to_string</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isEquivalentFqn">is_equivalent_fqn</a></code> | Evaluates if CfnResourceNode fqn is equivalent to ResourceNode fqn. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

##### `is_equivalent_fqn` <a name="is_equivalent_fqn" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isEquivalentFqn"></a>

```python
def is_equivalent_fqn(
  resource: ResourceNode
) -> bool
```

Evaluates if CfnResourceNode fqn is equivalent to ResourceNode fqn.

*Example*

```python
# Example automatically generated from non-compiling source. May contain errors.
"aws-cdk-lib.aws_lambda.Function""aws-cdk-lib.aws_lambda.CfnFunction"
```


###### `resource`<sup>Required</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isEquivalentFqn.parameter.resource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>

{@link Graph.ResourceNode } to compare.

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isCfnResourceNode">is_cfn_resource_node</a></code> | Indicates if a node is a {@link CfnResourceNode}. |

---

##### `is_cfn_resource_node` <a name="is_cfn_resource_node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isCfnResourceNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.CfnResourceNode.is_cfn_resource_node(
  node: Node
)
```

Indicates if a node is a {@link CfnResourceNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isCfnResourceNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isImport">is_import</a></code> | <code>bool</code> | Indicates if this CfnResource is imported (eg: `s3.Bucket.fromBucketArn`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.resource">resource</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a></code> | Reference to the L2 Resource that wraps this L1 CfnResource if it is wrapped. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `is_import`<sup>Required</sup> <a name="is_import" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isImport"></a>

```python
is_import: bool
```

- *Type:* bool

Indicates if this CfnResource is imported (eg: `s3.Bucket.fromBucketArn`).

---

##### `resource`<sup>Optional</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.resource"></a>

```python
resource: ResourceNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>

Reference to the L2 Resource that wraps this L1 CfnResource if it is wrapped.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.ATT_IMPORT_ARN_TOKEN">ATT_IMPORT_ARN_TOKEN</a></code> | <code>str</code> | Normalized CfnReference attribute. |

---

##### `ATT_IMPORT_ARN_TOKEN`<sup>Required</sup> <a name="ATT_IMPORT_ARN_TOKEN" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.ATT_IMPORT_ARN_TOKEN"></a>

```python
ATT_IMPORT_ARN_TOKEN: str
```

- *Type:* str

Normalized CfnReference attribute.

---

### Dependency <a name="Dependency" id="@aws-prototyping-sdk/cdk-graph.Dependency"></a>

Dependency edge class defines CloudFormation dependency between resources.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Dependency.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Dependency(
  props: ITypedEdgeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Dependency.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateDestroy">mutate_destroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.isEquivalent">is_equivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateConsume">mutate_consume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateDirection">mutate_direction</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateSource">mutate_source</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateTarget">mutate_target</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.toString">to_string</a></code> | Get string representation of this edge. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.Dependency.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Dependency.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.Dependency.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Dependency.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.Dependency.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDestroy"></a>

```python
def mutate_destroy(
  _strict: bool = None
) -> None
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDestroy.parameter._strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.Dependency.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.setTag.parameter.value"></a>

- *Type:* str

---

##### `is_equivalent` <a name="is_equivalent" id="@aws-prototyping-sdk/cdk-graph.Dependency.isEquivalent"></a>

```python
def is_equivalent(
  edge: Edge
) -> bool
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Dependency.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_consume` <a name="mutate_consume" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateConsume"></a>

```python
def mutate_consume(
  edge: Edge
) -> None
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutate_direction` <a name="mutate_direction" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDirection"></a>

```python
def mutate_direction(
  direction: EdgeDirectionEnum
) -> None
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutate_source` <a name="mutate_source" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateSource"></a>

```python
def mutate_source(
  node: Node
) -> None
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_target` <a name="mutate_target" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateTarget"></a>

```python
def mutate_target(
  node: Node
) -> None
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.Dependency.toString"></a>

```python
def to_string() -> str
```

Get string representation of this edge.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain">find_all_in_chain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findInChain">find_in_chain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.isDependency">is_dependency</a></code> | Indicates if given edge is a {@link Dependency} edge. |

---

##### `find_all_in_chain` <a name="find_all_in_chain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Dependency.find_all_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `find_in_chain` <a name="find_in_chain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Dependency.find_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Dependency.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `is_dependency` <a name="is_dependency" id="@aws-prototyping-sdk/cdk-graph.Dependency.isDependency"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Dependency.is_dependency(
  edge: Edge
)
```

Indicates if given edge is a {@link Dependency} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Dependency.isDependency.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.edgeType">edge_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isClosed">is_closed</a></code> | <code>bool</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isCrossStack">is_cross_stack</a></code> | <code>bool</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.direction"></a>

```python
direction: EdgeDirectionEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edge_type`<sup>Required</sup> <a name="edge_type" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.edgeType"></a>

```python
edge_type: EdgeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `is_closed`<sup>Required</sup> <a name="is_closed" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isClosed"></a>

```python
is_closed: bool
```

- *Type:* bool

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `is_cross_stack`<sup>Required</sup> <a name="is_cross_stack" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isCrossStack"></a>

```python
is_cross_stack: bool
```

- *Type:* bool

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.PREFIX">PREFIX</a></code> | <code>str</code> | Edge prefix to denote dependency edge. |

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.PREFIX"></a>

```python
PREFIX: str
```

- *Type:* str

Edge prefix to denote dependency edge.

---

### Edge <a name="Edge" id="@aws-prototyping-sdk/cdk-graph.Edge"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEdge">ISerializableEdge</a>

Edge class defines a link (relationship) between nodes, as in standard [graph theory](https://en.wikipedia.org/wiki/Graph_theory).

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Edge.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Edge(
  props: IEdgeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Edge.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateDestroy">mutate_destroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.isEquivalent">is_equivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateConsume">mutate_consume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateDirection">mutate_direction</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateSource">mutate_source</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateTarget">mutate_target</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.toString">to_string</a></code> | Get string representation of this edge. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.Edge.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.Edge.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Edge.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.Edge.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Edge.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Edge.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.Edge.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.Edge.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Edge.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.Edge.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.Edge.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.Edge.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Edge.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.Edge.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDestroy"></a>

```python
def mutate_destroy(
  _strict: bool = None
) -> None
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDestroy.parameter._strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.Edge.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.Edge.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.setTag.parameter.value"></a>

- *Type:* str

---

##### `is_equivalent` <a name="is_equivalent" id="@aws-prototyping-sdk/cdk-graph.Edge.isEquivalent"></a>

```python
def is_equivalent(
  edge: Edge
) -> bool
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Edge.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_consume` <a name="mutate_consume" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateConsume"></a>

```python
def mutate_consume(
  edge: Edge
) -> None
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutate_direction` <a name="mutate_direction" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDirection"></a>

```python
def mutate_direction(
  direction: EdgeDirectionEnum
) -> None
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutate_source` <a name="mutate_source" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateSource"></a>

```python
def mutate_source(
  node: Node
) -> None
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_target` <a name="mutate_target" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateTarget"></a>

```python
def mutate_target(
  node: Node
) -> None
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.Edge.toString"></a>

```python
def to_string() -> str
```

Get string representation of this edge.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain">find_all_in_chain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findInChain">find_in_chain</a></code> | Find first edge matching predicate within an EdgeChain. |

---

##### `find_all_in_chain` <a name="find_all_in_chain" id="@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Edge.find_all_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `find_in_chain` <a name="find_in_chain" id="@aws-prototyping-sdk/cdk-graph.Edge.findInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Edge.find_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Edge.findInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Edge.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.edgeType">edge_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isClosed">is_closed</a></code> | <code>bool</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isCrossStack">is_cross_stack</a></code> | <code>bool</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Edge.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Edge.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Edge.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Edge.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Edge.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Edge.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.Edge.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Edge.property.direction"></a>

```python
direction: EdgeDirectionEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edge_type`<sup>Required</sup> <a name="edge_type" id="@aws-prototyping-sdk/cdk-graph.Edge.property.edgeType"></a>

```python
edge_type: EdgeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `is_closed`<sup>Required</sup> <a name="is_closed" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isClosed"></a>

```python
is_closed: bool
```

- *Type:* bool

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `is_cross_stack`<sup>Required</sup> <a name="is_cross_stack" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isCrossStack"></a>

```python
is_cross_stack: bool
```

- *Type:* bool

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.Edge.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.Edge.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---


### ImportReference <a name="ImportReference" id="@aws-prototyping-sdk/cdk-graph.ImportReference"></a>

Import reference defines **Fn::ImportValue** type reference edge.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.ImportReference.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ImportReference(
  props: ITypedEdgeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.ImportReference.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDestroy">mutate_destroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isEquivalent">is_equivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateConsume">mutate_consume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDirection">mutate_direction</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateSource">mutate_source</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateTarget">mutate_target</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.toString">to_string</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.resolveChain">resolve_chain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.resolveTargets">resolve_targets</a></code> | Resolve targets by following potential edge chain. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDestroy"></a>

```python
def mutate_destroy(
  _strict: bool = None
) -> None
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDestroy.parameter._strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setTag.parameter.value"></a>

- *Type:* str

---

##### `is_equivalent` <a name="is_equivalent" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isEquivalent"></a>

```python
def is_equivalent(
  edge: Edge
) -> bool
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_consume` <a name="mutate_consume" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateConsume"></a>

```python
def mutate_consume(
  edge: Edge
) -> None
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutate_direction` <a name="mutate_direction" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDirection"></a>

```python
def mutate_direction(
  direction: EdgeDirectionEnum
) -> None
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutate_source` <a name="mutate_source" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateSource"></a>

```python
def mutate_source(
  node: Node
) -> None
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_target` <a name="mutate_target" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateTarget"></a>

```python
def mutate_target(
  node: Node
) -> None
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.ImportReference.toString"></a>

```python
def to_string() -> str
```

Get string representation of this edge.

##### `resolve_chain` <a name="resolve_chain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.resolveChain"></a>

```python
def resolve_chain() -> typing.List[typing.Any]
```

Resolve reference chain.

##### `resolve_targets` <a name="resolve_targets" id="@aws-prototyping-sdk/cdk-graph.ImportReference.resolveTargets"></a>

```python
def resolve_targets() -> typing.List[Node]
```

Resolve targets by following potential edge chain.

> [{@link EdgeChain }]({@link EdgeChain })

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain">find_all_in_chain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain">find_in_chain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isRef">is_ref</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isReference">is_reference</a></code> | Indicates if edge is a {@link Reference}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isImport">is_import</a></code> | Indicates if edge is **Fn::ImportValue** based {@link Reference}. |

---

##### `find_all_in_chain` <a name="find_all_in_chain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ImportReference.find_all_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `find_in_chain` <a name="find_in_chain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ImportReference.find_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `is_ref` <a name="is_ref" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isRef"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ImportReference.is_ref(
  edge: Edge
)
```

Indicates if edge is a **Ref** based {@link Reference} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isRef.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `is_reference` <a name="is_reference" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isReference"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ImportReference.is_reference(
  edge: Edge
)
```

Indicates if edge is a {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isReference.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `is_import` <a name="is_import" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isImport"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ImportReference.is_import(
  edge: Edge
)
```

Indicates if edge is **Fn::ImportValue** based {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isImport.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.edgeType">edge_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isClosed">is_closed</a></code> | <code>bool</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isCrossStack">is_cross_stack</a></code> | <code>bool</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.referenceType">reference_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Get type of reference. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.direction"></a>

```python
direction: EdgeDirectionEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edge_type`<sup>Required</sup> <a name="edge_type" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.edgeType"></a>

```python
edge_type: EdgeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `is_closed`<sup>Required</sup> <a name="is_closed" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isClosed"></a>

```python
is_closed: bool
```

- *Type:* bool

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `is_cross_stack`<sup>Required</sup> <a name="is_cross_stack" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isCrossStack"></a>

```python
is_cross_stack: bool
```

- *Type:* bool

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `reference_type`<sup>Required</sup> <a name="reference_type" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.referenceType"></a>

```python
reference_type: ReferenceTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Get type of reference.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.ATT_TYPE">ATT_TYPE</a></code> | <code>str</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.PREFIX">PREFIX</a></code> | <code>str</code> | Edge prefix to denote **Fn::ImportValue** type reference edge. |

---

##### `ATT_TYPE`<sup>Required</sup> <a name="ATT_TYPE" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.ATT_TYPE"></a>

```python
ATT_TYPE: str
```

- *Type:* str

Attribute defining the type of reference.

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.PREFIX"></a>

```python
PREFIX: str
```

- *Type:* str

Edge prefix to denote **Fn::ImportValue** type reference edge.

---

### NestedStackNode <a name="NestedStackNode" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode"></a>

NestedStackNode defines a cdk NestedStack.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.NestedStackNode(
  props: INestedStackNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.toString">to_string</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addOutput">add_output</a></code> | Associate {@link OutputNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addParameter">add_parameter</a></code> | Associate {@link ParameterNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findOutput">find_output</a></code> | Find {@link OutputNode} with *logicalId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findParameter">find_parameter</a></code> | Find {@link ParameterNode} with *parameterId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveOutput">mutate_remove_output</a></code> | Disassociate {@link OutputNode} from this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveParameter">mutate_remove_parameter</a></code> | Disassociate {@link ParameterNode} from this stack. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

##### `add_output` <a name="add_output" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addOutput"></a>

```python
def add_output(
  node: OutputNode
) -> None
```

Associate {@link OutputNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `add_parameter` <a name="add_parameter" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addParameter"></a>

```python
def add_parameter(
  node: ParameterNode
) -> None
```

Associate {@link ParameterNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

##### `find_output` <a name="find_output" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findOutput"></a>

```python
def find_output(
  logical_id: str
) -> OutputNode
```

Find {@link OutputNode} with *logicalId* defined by this stack.

###### `logical_id`<sup>Required</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findOutput.parameter.logicalId"></a>

- *Type:* str

---

##### `find_parameter` <a name="find_parameter" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findParameter"></a>

```python
def find_parameter(
  parameter_id: str
) -> ParameterNode
```

Find {@link ParameterNode} with *parameterId* defined by this stack.

###### `parameter_id`<sup>Required</sup> <a name="parameter_id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findParameter.parameter.parameterId"></a>

- *Type:* str

---

##### `mutate_remove_output` <a name="mutate_remove_output" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveOutput"></a>

```python
def mutate_remove_output(
  node: OutputNode
) -> bool
```

Disassociate {@link OutputNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `mutate_remove_parameter` <a name="mutate_remove_parameter" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveParameter"></a>

```python
def mutate_remove_parameter(
  node: ParameterNode
) -> bool
```

Disassociate {@link ParameterNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isStackNode">is_stack_node</a></code> | Indicates if node is a {@link StackNode}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.of">of</a></code> | Gets the {@link StackNode} containing a given resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isNestedStackNode">is_nested_stack_node</a></code> | Indicates if node is a {@link NestedStackNode}. |

---

##### `is_stack_node` <a name="is_stack_node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isStackNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.NestedStackNode.is_stack_node(
  node: Node
)
```

Indicates if node is a {@link StackNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isStackNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `of` <a name="of" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.of"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.NestedStackNode.of(
  node: Node
)
```

Gets the {@link StackNode} containing a given resource.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.of.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_nested_stack_node` <a name="is_nested_stack_node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isNestedStackNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.NestedStackNode.is_nested_stack_node(
  node: Node
)
```

Indicates if node is a {@link NestedStackNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isNestedStackNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.exports">exports</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]</code> | Get all **exported** {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.outputs">outputs</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]</code> | Get all {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parameters">parameters</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>]</code> | Get all {@link ParameterNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stage">stage</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a></code> | Get {@link StageNode} containing this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parentStack">parent_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get parent stack of this nested stack. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `exports`<sup>Required</sup> <a name="exports" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.exports"></a>

```python
exports: typing.List[OutputNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]

Get all **exported** {@link OutputNode}s defined by this stack.

---

##### `outputs`<sup>Required</sup> <a name="outputs" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.outputs"></a>

```python
outputs: typing.List[OutputNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]

Get all {@link OutputNode}s defined by this stack.

---

##### `parameters`<sup>Required</sup> <a name="parameters" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parameters"></a>

```python
parameters: typing.List[ParameterNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>]

Get all {@link ParameterNode}s defined by this stack.

---

##### `stage`<sup>Optional</sup> <a name="stage" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stage"></a>

```python
stage: StageNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>

Get {@link StageNode} containing this stack.

---

##### `parent_stack`<sup>Optional</sup> <a name="parent_stack" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parentStack"></a>

```python
parent_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get parent stack of this nested stack.

---


### Node <a name="Node" id="@aws-prototyping-sdk/cdk-graph.Node"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableNode">ISerializableNode</a>

Node class is the base definition of **node** entities in the graph, as in standard [graph theory](https://en.wikipedia.org/wiki/Graph_theory).

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Node.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Node(
  props: INodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Node.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.toString">to_string</a></code> | Get string representation of this node. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.Node.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.Node.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Node.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.Node.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Node.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Node.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.Node.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.Node.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Node.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Node.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.Node.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.Node.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Node.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.Node.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.Node.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.Node.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.Node.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Node.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.Node.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Node.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Node.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.Node.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.Node.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.Node.mutateDestroy.parameter.strict"></a>

- *Type:* bool

Indicates that this node must not have references.

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.Node.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.Node.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.Node.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.Node.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Node.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.Node.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Node.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.Node.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.Node.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.Node.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.Node.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.Node.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.Node.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.Node.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.Node.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.Node.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.Node.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.Node.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.Node.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.Node.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.Node.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.Node.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.Node.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.Node.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.Node.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.Node.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.Node.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.Node.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.Node.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.Node.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.Node.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.Node.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.Node.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.Node.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Node.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Node.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.Node.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.Node.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Node.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Node.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Node.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Node.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.Node.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.Node.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.Node.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.Node.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.Node.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.Node.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.Node.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.Node.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.Node.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.Node.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.Node.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.Node.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.Node.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.Node.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.Node.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.Node.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.Node.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.Node.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.Node.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.Node.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.Node.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.Node.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.Node.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.Node.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.Node.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.Node.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.Node.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.Node.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.Node.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.Node.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.Node.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.Node.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.Node.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Node.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---


### OutputNode <a name="OutputNode" id="@aws-prototyping-sdk/cdk-graph.OutputNode"></a>

OutputNode defines a cdk CfnOutput resources.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.OutputNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.OutputNode(
  props: IOutputNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.OutputNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.toString">to_string</a></code> | Get string representation of this node. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.OutputNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.OutputNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isOutputNode">is_output_node</a></code> | Indicates if node is an {@link OutputNode}. |

---

##### `is_output_node` <a name="is_output_node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isOutputNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.OutputNode.is_output_node(
  node: Node
)
```

Indicates if node is an {@link OutputNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isOutputNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExport">is_export</a></code> | <code>bool</code> | Indicates if {@link OutputNode} is **exported**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.value">value</a></code> | <code>typing.Any</code> | Get the *value** attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.exportName">export_name</a></code> | <code>str</code> | Get the export name attribute. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `is_export`<sup>Required</sup> <a name="is_export" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExport"></a>

```python
is_export: bool
```

- *Type:* bool

Indicates if {@link OutputNode} is **exported**.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.value"></a>

```python
value: typing.Any
```

- *Type:* typing.Any

Get the *value** attribute.

---

##### `export_name`<sup>Optional</sup> <a name="export_name" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.exportName"></a>

```python
export_name: str
```

- *Type:* str

Get the export name attribute.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_EXPORT_NAME">ATTR_EXPORT_NAME</a></code> | <code>str</code> | Attribute key where output export name is stored. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_VALUE">ATTR_VALUE</a></code> | <code>str</code> | Attribute key where output value is stored. |

---

##### `ATTR_EXPORT_NAME`<sup>Required</sup> <a name="ATTR_EXPORT_NAME" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_EXPORT_NAME"></a>

```python
ATTR_EXPORT_NAME: str
```

- *Type:* str

Attribute key where output export name is stored.

---

##### `ATTR_VALUE`<sup>Required</sup> <a name="ATTR_VALUE" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_VALUE"></a>

```python
ATTR_VALUE: str
```

- *Type:* str

Attribute key where output value is stored.

---

### ParameterNode <a name="ParameterNode" id="@aws-prototyping-sdk/cdk-graph.ParameterNode"></a>

ParameterNode defines a CfnParameter node.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ParameterNode(
  props: IParameterNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.toString">to_string</a></code> | Get string representation of this node. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isParameterNode">is_parameter_node</a></code> | Indicates if node is a {@link ParameterNode}. |

---

##### `is_parameter_node` <a name="is_parameter_node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isParameterNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ParameterNode.is_parameter_node(
  node: Node
)
```

Indicates if node is a {@link ParameterNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isParameterNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isStackReference">is_stack_reference</a></code> | <code>bool</code> | Indicates if parameter is a reference to a stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parameterType">parameter_type</a></code> | <code>typing.Any</code> | Get the parameter type attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.value">value</a></code> | <code>typing.Any</code> | Get the value attribute. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `is_stack_reference`<sup>Required</sup> <a name="is_stack_reference" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isStackReference"></a>

```python
is_stack_reference: bool
```

- *Type:* bool

Indicates if parameter is a reference to a stack.

---

##### `parameter_type`<sup>Required</sup> <a name="parameter_type" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parameterType"></a>

```python
parameter_type: typing.Any
```

- *Type:* typing.Any

Get the parameter type attribute.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.value"></a>

```python
value: typing.Any
```

- *Type:* typing.Any

Get the value attribute.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_TYPE">ATTR_TYPE</a></code> | <code>str</code> | Attribute key where parameter type is stored. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_VALUE">ATTR_VALUE</a></code> | <code>str</code> | Attribute key where parameter value is store. |

---

##### `ATTR_TYPE`<sup>Required</sup> <a name="ATTR_TYPE" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_TYPE"></a>

```python
ATTR_TYPE: str
```

- *Type:* str

Attribute key where parameter type is stored.

---

##### `ATTR_VALUE`<sup>Required</sup> <a name="ATTR_VALUE" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_VALUE"></a>

```python
ATTR_VALUE: str
```

- *Type:* str

Attribute key where parameter value is store.

---

### Reference <a name="Reference" id="@aws-prototyping-sdk/cdk-graph.Reference"></a>

Reference edge class defines a directed relationship between nodes.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Reference.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Reference(
  props: IReferenceProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Reference.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy">mutate_destroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent">is_equivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume">mutate_consume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateDirection">mutate_direction</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateSource">mutate_source</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget">mutate_target</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.toString">to_string</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.resolveChain">resolve_chain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.resolveTargets">resolve_targets</a></code> | Resolve targets by following potential edge chain. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.Reference.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Reference.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.Reference.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Reference.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.Reference.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.Reference.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy"></a>

```python
def mutate_destroy(
  _strict: bool = None
) -> None
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy.parameter._strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag.parameter.value"></a>

- *Type:* str

---

##### `is_equivalent` <a name="is_equivalent" id="@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent"></a>

```python
def is_equivalent(
  edge: Edge
) -> bool
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_consume` <a name="mutate_consume" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume"></a>

```python
def mutate_consume(
  edge: Edge
) -> None
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutate_direction` <a name="mutate_direction" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDirection"></a>

```python
def mutate_direction(
  direction: EdgeDirectionEnum
) -> None
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutate_source` <a name="mutate_source" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateSource"></a>

```python
def mutate_source(
  node: Node
) -> None
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_target` <a name="mutate_target" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget"></a>

```python
def mutate_target(
  node: Node
) -> None
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.Reference.toString"></a>

```python
def to_string() -> str
```

Get string representation of this edge.

##### `resolve_chain` <a name="resolve_chain" id="@aws-prototyping-sdk/cdk-graph.Reference.resolveChain"></a>

```python
def resolve_chain() -> typing.List[typing.Any]
```

Resolve reference chain.

##### `resolve_targets` <a name="resolve_targets" id="@aws-prototyping-sdk/cdk-graph.Reference.resolveTargets"></a>

```python
def resolve_targets() -> typing.List[Node]
```

Resolve targets by following potential edge chain.

> [{@link EdgeChain }]({@link EdgeChain })

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain">find_all_in_chain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findInChain">find_in_chain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isRef">is_ref</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isReference">is_reference</a></code> | Indicates if edge is a {@link Reference}. |

---

##### `find_all_in_chain` <a name="find_all_in_chain" id="@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Reference.find_all_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `find_in_chain` <a name="find_in_chain" id="@aws-prototyping-sdk/cdk-graph.Reference.findInChain"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Reference.find_in_chain(
  chain: typing.List[typing.Any],
  predicate: IEdgePredicate
)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Reference.findInChain.parameter.chain"></a>

- *Type:* typing.List[typing.Any]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Reference.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `is_ref` <a name="is_ref" id="@aws-prototyping-sdk/cdk-graph.Reference.isRef"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Reference.is_ref(
  edge: Edge
)
```

Indicates if edge is a **Ref** based {@link Reference} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.isRef.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `is_reference` <a name="is_reference" id="@aws-prototyping-sdk/cdk-graph.Reference.isReference"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Reference.is_reference(
  edge: Edge
)
```

Indicates if edge is a {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.isReference.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.edgeType">edge_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isClosed">is_closed</a></code> | <code>bool</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isCrossStack">is_cross_stack</a></code> | <code>bool</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.referenceType">reference_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Get type of reference. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Reference.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Reference.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Reference.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Reference.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Reference.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Reference.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.Reference.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Reference.property.direction"></a>

```python
direction: EdgeDirectionEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edge_type`<sup>Required</sup> <a name="edge_type" id="@aws-prototyping-sdk/cdk-graph.Reference.property.edgeType"></a>

```python
edge_type: EdgeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `is_closed`<sup>Required</sup> <a name="is_closed" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isClosed"></a>

```python
is_closed: bool
```

- *Type:* bool

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `is_cross_stack`<sup>Required</sup> <a name="is_cross_stack" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isCrossStack"></a>

```python
is_cross_stack: bool
```

- *Type:* bool

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.Reference.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.Reference.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `reference_type`<sup>Required</sup> <a name="reference_type" id="@aws-prototyping-sdk/cdk-graph.Reference.property.referenceType"></a>

```python
reference_type: ReferenceTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Get type of reference.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.ATT_TYPE">ATT_TYPE</a></code> | <code>str</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.PREFIX">PREFIX</a></code> | <code>str</code> | Edge prefix to denote **Ref** type reference edge. |

---

##### `ATT_TYPE`<sup>Required</sup> <a name="ATT_TYPE" id="@aws-prototyping-sdk/cdk-graph.Reference.property.ATT_TYPE"></a>

```python
ATT_TYPE: str
```

- *Type:* str

Attribute defining the type of reference.

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.Reference.property.PREFIX"></a>

```python
PREFIX: str
```

- *Type:* str

Edge prefix to denote **Ref** type reference edge.

---

### ResourceNode <a name="ResourceNode" id="@aws-prototyping-sdk/cdk-graph.ResourceNode"></a>

ResourceNode class defines a L2 cdk resource construct.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ResourceNode(
  props: IResourceNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.toString">to_string</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource">mutate_cfn_resource</a></code> | Modifies the L1 resource wrapped by this L2 resource. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

Indicates that this node must not have references.

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

##### `mutate_cfn_resource` <a name="mutate_cfn_resource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource"></a>

```python
def mutate_cfn_resource(
  cfn_resource: CfnResourceNode = None
) -> None
```

Modifies the L1 resource wrapped by this L2 resource.

###### `cfn_resource`<sup>Optional</sup> <a name="cfn_resource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource.parameter.cfnResource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isResourceNode">is_resource_node</a></code> | Indicates if node is a {@link ResourceNode}. |

---

##### `is_resource_node` <a name="is_resource_node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isResourceNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.ResourceNode.is_resource_node(
  node: Node
)
```

Indicates if node is a {@link ResourceNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isResourceNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Get the cfn properties from the L1 resource that this L2 resource wraps. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this L2 resource or for the L1 resource is wraps. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCdkOwned">is_cdk_owned</a></code> | <code>bool</code> | Indicates if this resource is owned by cdk (defined in cdk library). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isWrapper">is_wrapper</a></code> | <code>bool</code> | Indicates if Resource wraps a single CfnResource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnResource">cfn_resource</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a></code> | Get the default/primary CfnResource that this Resource wraps. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Get the cfn properties from the L1 resource that this L2 resource wraps.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this L2 resource or for the L1 resource is wraps.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `is_cdk_owned`<sup>Required</sup> <a name="is_cdk_owned" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCdkOwned"></a>

```python
is_cdk_owned: bool
```

- *Type:* bool

Indicates if this resource is owned by cdk (defined in cdk library).

---

##### `is_wrapper`<sup>Required</sup> <a name="is_wrapper" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isWrapper"></a>

```python
is_wrapper: bool
```

- *Type:* bool

Indicates if Resource wraps a single CfnResource.

---

##### `cfn_resource`<sup>Optional</sup> <a name="cfn_resource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnResource"></a>

```python
cfn_resource: CfnResourceNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>

Get the default/primary CfnResource that this Resource wraps.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_PROPS">ATT_WRAPPED_CFN_PROPS</a></code> | <code>str</code> | Attribute key for cfn properties. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_TYPE">ATT_WRAPPED_CFN_TYPE</a></code> | <code>str</code> | Attribute key for cfn resource type. |

---

##### `ATT_WRAPPED_CFN_PROPS`<sup>Required</sup> <a name="ATT_WRAPPED_CFN_PROPS" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_PROPS"></a>

```python
ATT_WRAPPED_CFN_PROPS: str
```

- *Type:* str

Attribute key for cfn properties.

---

##### `ATT_WRAPPED_CFN_TYPE`<sup>Required</sup> <a name="ATT_WRAPPED_CFN_TYPE" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_TYPE"></a>

```python
ATT_WRAPPED_CFN_TYPE: str
```

- *Type:* str

Attribute key for cfn resource type.

---

### RootNode <a name="RootNode" id="@aws-prototyping-sdk/cdk-graph.RootNode"></a>

RootNode represents the root of the store tree.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.RootNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.RootNode(
  store: Store
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.Initializer.parameter.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.RootNode.Initializer.parameter.store"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor* > {@link RootNode} does not support this mutation. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node* > {@link RootNode} does not support this mutation. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.toString">to_string</a></code> | Get string representation of this node. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.RootNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy"></a>

```python
def mutate_destroy(
  _strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

> {@link RootNode} does not support this mutation

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy.parameter._strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.RootNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.RootNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.RootNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.RootNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.
**The root not is excluded from list**

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.RootNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.RootNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.RootNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.RootNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.RootNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

> {@link RootNode} does not support this mutation

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  _ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor* > {@link RootNode} does not support this mutation.

###### `_ancestor`<sup>Required</sup> <a name="_ancestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo.parameter._ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node* > {@link RootNode} does not support this mutation.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateHoist"></a>

```python
def mutate_hoist(
  _newparent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

> {@link RootNode} does not support this mutation

###### `_newparent`<sup>Required</sup> <a name="_newparent" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateHoist.parameter._newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.RootNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isRootNode">is_root_node</a></code> | Indicates if node is a {@link RootNode}. |

---

##### `is_root_node` <a name="is_root_node" id="@aws-prototyping-sdk/cdk-graph.RootNode.isRootNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.RootNode.is_root_node(
  node: Node
)
```

Indicates if node is a {@link RootNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.isRootNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.PATH">PATH</a></code> | <code>str</code> | Fixed path of root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.UUID">UUID</a></code> | <code>str</code> | Fixed UUID of root. |

---

##### `PATH`<sup>Required</sup> <a name="PATH" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.PATH"></a>

```python
PATH: str
```

- *Type:* str

Fixed path of root.

---

##### `UUID`<sup>Required</sup> <a name="UUID" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.UUID"></a>

```python
UUID: str
```

- *Type:* str

Fixed UUID of root.

---

### StackNode <a name="StackNode" id="@aws-prototyping-sdk/cdk-graph.StackNode"></a>

StackNode defines a cdk Stack.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.StackNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.StackNode(
  props: IStackNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.StackNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.toString">to_string</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addOutput">add_output</a></code> | Associate {@link OutputNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addParameter">add_parameter</a></code> | Associate {@link ParameterNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findOutput">find_output</a></code> | Find {@link OutputNode} with *logicalId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findParameter">find_parameter</a></code> | Find {@link ParameterNode} with *parameterId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput">mutate_remove_output</a></code> | Disassociate {@link OutputNode} from this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter">mutate_remove_parameter</a></code> | Disassociate {@link ParameterNode} from this stack. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.StackNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.StackNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.StackNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StackNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.StackNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.StackNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StackNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.StackNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StackNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.StackNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.StackNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

##### `add_output` <a name="add_output" id="@aws-prototyping-sdk/cdk-graph.StackNode.addOutput"></a>

```python
def add_output(
  node: OutputNode
) -> None
```

Associate {@link OutputNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.addOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `add_parameter` <a name="add_parameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.addParameter"></a>

```python
def add_parameter(
  node: ParameterNode
) -> None
```

Associate {@link ParameterNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.addParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

##### `find_output` <a name="find_output" id="@aws-prototyping-sdk/cdk-graph.StackNode.findOutput"></a>

```python
def find_output(
  logical_id: str
) -> OutputNode
```

Find {@link OutputNode} with *logicalId* defined by this stack.

###### `logical_id`<sup>Required</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.StackNode.findOutput.parameter.logicalId"></a>

- *Type:* str

---

##### `find_parameter` <a name="find_parameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.findParameter"></a>

```python
def find_parameter(
  parameter_id: str
) -> ParameterNode
```

Find {@link ParameterNode} with *parameterId* defined by this stack.

###### `parameter_id`<sup>Required</sup> <a name="parameter_id" id="@aws-prototyping-sdk/cdk-graph.StackNode.findParameter.parameter.parameterId"></a>

- *Type:* str

---

##### `mutate_remove_output` <a name="mutate_remove_output" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput"></a>

```python
def mutate_remove_output(
  node: OutputNode
) -> bool
```

Disassociate {@link OutputNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `mutate_remove_parameter` <a name="mutate_remove_parameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter"></a>

```python
def mutate_remove_parameter(
  node: ParameterNode
) -> bool
```

Disassociate {@link ParameterNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isStackNode">is_stack_node</a></code> | Indicates if node is a {@link StackNode}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.of">of</a></code> | Gets the {@link StackNode} containing a given resource. |

---

##### `is_stack_node` <a name="is_stack_node" id="@aws-prototyping-sdk/cdk-graph.StackNode.isStackNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.StackNode.is_stack_node(
  node: Node
)
```

Indicates if node is a {@link StackNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.isStackNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `of` <a name="of" id="@aws-prototyping-sdk/cdk-graph.StackNode.of"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.StackNode.of(
  node: Node
)
```

Gets the {@link StackNode} containing a given resource.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.of.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.exports">exports</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]</code> | Get all **exported** {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.outputs">outputs</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]</code> | Get all {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.parameters">parameters</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>]</code> | Get all {@link ParameterNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.stage">stage</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a></code> | Get {@link StageNode} containing this stack. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `exports`<sup>Required</sup> <a name="exports" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.exports"></a>

```python
exports: typing.List[OutputNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]

Get all **exported** {@link OutputNode}s defined by this stack.

---

##### `outputs`<sup>Required</sup> <a name="outputs" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.outputs"></a>

```python
outputs: typing.List[OutputNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>]

Get all {@link OutputNode}s defined by this stack.

---

##### `parameters`<sup>Required</sup> <a name="parameters" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.parameters"></a>

```python
parameters: typing.List[ParameterNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>]

Get all {@link ParameterNode}s defined by this stack.

---

##### `stage`<sup>Optional</sup> <a name="stage" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.stage"></a>

```python
stage: StageNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>

Get {@link StageNode} containing this stack.

---


### StageNode <a name="StageNode" id="@aws-prototyping-sdk/cdk-graph.StageNode"></a>

StageNode defines a cdk Stage.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.StageNode.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.StageNode(
  props: ITypedNodeProps
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.StageNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute">add_attribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addFlag">add_flag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata">add_metadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addTag">add_tag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.applyData">apply_data</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata">find_metadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute">get_attribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getTag">get_tag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute">has_attribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasFlag">has_flag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata">has_metadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasTag">has_tag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy">mutate_destroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute">set_attribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.setTag">set_tag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addChild">add_child</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addLink">add_link</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink">add_reverse_link</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn">does_depend_on</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.doesReference">does_reference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findAll">find_all</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findAllLinks">find_all_links</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor">find_ancestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findChild">find_child</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findLink">find_link</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findLinks">find_links</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp">get_cfn_prop</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getChild">get_child</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains">get_link_chains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor">get_nearest_ancestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor">is_ancestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isChild">is_child</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapse">mutate_collapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo">mutate_collapse_to</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseToParent">mutate_collapse_to_parent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist">mutate_hoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateMove">mutate_move</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild">mutate_remove_child</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink">mutate_remove_link</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink">mutate_remove_reverse_link</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateUncluster">mutate_uncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.toString">to_string</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addStack">add_stack</a></code> | Associate a {@link StackNode} with this stage. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack">mutate_remove_stack</a></code> | Disassociate {@link StackNode} from this stage. |

---

##### `add_attribute` <a name="add_attribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute"></a>

```python
def add_attribute(
  key: str,
  value: typing.Any
) -> None
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `add_flag` <a name="add_flag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addFlag"></a>

```python
def add_flag(
  flag: FlagEnum
) -> None
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `add_metadata` <a name="add_metadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata"></a>

```python
def add_metadata(
  metadata_type: str,
  data: typing.Any
) -> None
```

Add metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `add_tag` <a name="add_tag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag"></a>

```python
def add_tag(
  key: str,
  value: str
) -> None
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag.parameter.value"></a>

- *Type:* str

---

##### `apply_data` <a name="apply_data" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData"></a>

```python
def apply_data(
  data: IBaseEntityDataProps,
  overwrite: bool = None,
  apply_flags: bool = None
) -> None
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData.parameter.overwrite"></a>

- *Type:* bool

---

###### `apply_flags`<sup>Optional</sup> <a name="apply_flags" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData.parameter.applyFlags"></a>

- *Type:* bool

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `find_metadata` <a name="find_metadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata"></a>

```python
def find_metadata(
  metadata_type: str
) -> typing.List[MetadataEntry]
```

Retrieves all metadata entries of a given type.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata.parameter.metadataType"></a>

- *Type:* str

---

##### `get_attribute` <a name="get_attribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute"></a>

```python
def get_attribute(
  key: str
) -> typing.Any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute.parameter.key"></a>

- *Type:* str

---

##### `get_tag` <a name="get_tag" id="@aws-prototyping-sdk/cdk-graph.StageNode.getTag"></a>

```python
def get_tag(
  key: str
) -> str
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getTag.parameter.key"></a>

- *Type:* str

---

##### `has_attribute` <a name="has_attribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute"></a>

```python
def has_attribute(
  key: str,
  value: typing.Any = None
) -> bool
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `has_flag` <a name="has_flag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasFlag"></a>

```python
def has_flag(
  flag: FlagEnum
) -> bool
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `has_metadata` <a name="has_metadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata"></a>

```python
def has_metadata(
  metadata_type: str,
  data: typing.Any
) -> bool
```

Indicates if entity has matching metadata entry.

###### `metadata_type`<sup>Required</sup> <a name="metadata_type" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata.parameter.metadataType"></a>

- *Type:* str

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata.parameter.data"></a>

- *Type:* typing.Any

---

##### `has_tag` <a name="has_tag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag"></a>

```python
def has_tag(
  key: str,
  value: str = None
) -> bool
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag.parameter.value"></a>

- *Type:* str

---

##### `mutate_destroy` <a name="mutate_destroy" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy"></a>

```python
def mutate_destroy(
  strict: bool = None
) -> None
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy.parameter.strict"></a>

- *Type:* bool

Indicates that this node must not have references.

---

##### `set_attribute` <a name="set_attribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute"></a>

```python
def set_attribute(
  key: str,
  value: typing.Any
) -> None
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute.parameter.value"></a>

- *Type:* typing.Any

---

##### `set_tag` <a name="set_tag" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag"></a>

```python
def set_tag(
  key: str,
  value: str
) -> None
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag.parameter.key"></a>

- *Type:* str

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag.parameter.value"></a>

- *Type:* str

---

##### `add_child` <a name="add_child" id="@aws-prototyping-sdk/cdk-graph.StageNode.addChild"></a>

```python
def add_child(
  node: Node
) -> None
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_link` <a name="add_link" id="@aws-prototyping-sdk/cdk-graph.StageNode.addLink"></a>

```python
def add_link(
  edge: Edge
) -> None
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StageNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_reverse_link` <a name="add_reverse_link" id="@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink"></a>

```python
def add_reverse_link(
  edge: Edge
) -> None
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `does_depend_on` <a name="does_depend_on" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn"></a>

```python
def does_depend_on(
  node: Node
) -> bool
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `does_reference` <a name="does_reference" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesReference"></a>

```python
def does_reference(
  node: Node
) -> bool
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.StageNode.find"></a>

```python
def find(
  predicate: INodePredicate
) -> Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `find_all` <a name="find_all" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAll"></a>

```python
def find_all(
  options: IFindNodeOptions = None
) -> typing.List[Node]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `find_all_links` <a name="find_all_links" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAllLinks"></a>

```python
def find_all_links(
  options: IFindEdgeOptions = None
) -> typing.List[Edge]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `find_ancestor` <a name="find_ancestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor"></a>

```python
def find_ancestor(
  predicate: INodePredicate,
  max: typing.Union[int, float] = None
) -> Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor.parameter.max"></a>

- *Type:* typing.Union[int, float]

---

##### `find_child` <a name="find_child" id="@aws-prototyping-sdk/cdk-graph.StageNode.findChild"></a>

```python
def find_child(
  id: str
) -> Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StageNode.findChild.parameter.id"></a>

- *Type:* str

---

##### `find_link` <a name="find_link" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink"></a>

```python
def find_link(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `find_links` <a name="find_links" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks"></a>

```python
def find_links(
  predicate: IEdgePredicate,
  reverse: bool = None,
  follow: bool = None,
  direct: bool = None
) -> typing.List[Edge]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.reverse"></a>

- *Type:* bool

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.follow"></a>

- *Type:* bool

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.direct"></a>

- *Type:* bool

Indicates that only *direct* links should be searched.

---

##### `get_cfn_prop` <a name="get_cfn_prop" id="@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp"></a>

```python
def get_cfn_prop(
  key: str
) -> typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp.parameter.key"></a>

- *Type:* str

---

##### `get_child` <a name="get_child" id="@aws-prototyping-sdk/cdk-graph.StageNode.getChild"></a>

```python
def get_child(
  id: str
) -> Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StageNode.getChild.parameter.id"></a>

- *Type:* str

---

##### `get_link_chains` <a name="get_link_chains" id="@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains"></a>

```python
def get_link_chains(
  reverse: bool = None
) -> typing.List[typing.List[typing.Any]]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains.parameter.reverse"></a>

- *Type:* bool

---

##### `get_nearest_ancestor` <a name="get_nearest_ancestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor"></a>

```python
def get_nearest_ancestor(
  node: Node
) -> Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_ancestor` <a name="is_ancestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor"></a>

```python
def is_ancestor(
  ancestor: Node
) -> bool
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `is_child` <a name="is_child" id="@aws-prototyping-sdk/cdk-graph.StageNode.isChild"></a>

```python
def is_child(
  node: Node
) -> bool
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse` <a name="mutate_collapse" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapse"></a>

```python
def mutate_collapse() -> None
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutate_collapse_to` <a name="mutate_collapse_to" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo"></a>

```python
def mutate_collapse_to(
  ancestor: Node
) -> Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_collapse_to_parent` <a name="mutate_collapse_to_parent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseToParent"></a>

```python
def mutate_collapse_to_parent() -> Node
```

Collapses *this node* into *it's parent node*.

##### `mutate_hoist` <a name="mutate_hoist" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist"></a>

```python
def mutate_hoist(
  new_parent: Node
) -> None
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_move` <a name="mutate_move" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateMove"></a>

```python
def mutate_move(
  new_parent: Node
) -> None
```

Move this node into a new parent node.

###### `new_parent`<sup>Required</sup> <a name="new_parent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutate_remove_child` <a name="mutate_remove_child" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild"></a>

```python
def mutate_remove_child(
  node: Node
) -> bool
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutate_remove_link` <a name="mutate_remove_link" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink"></a>

```python
def mutate_remove_link(
  link: Edge
) -> bool
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_reverse_link` <a name="mutate_remove_reverse_link" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink"></a>

```python
def mutate_remove_reverse_link(
  link: Edge
) -> bool
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_uncluster` <a name="mutate_uncluster" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateUncluster"></a>

```python
def mutate_uncluster() -> None
```

Hoist all children to parent and collapse node to parent.

##### `to_string` <a name="to_string" id="@aws-prototyping-sdk/cdk-graph.StageNode.toString"></a>

```python
def to_string() -> str
```

Get string representation of this node.

##### `add_stack` <a name="add_stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.addStack"></a>

```python
def add_stack(
  stack: StackNode
) -> None
```

Associate a {@link StackNode} with this stage.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.addStack.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

##### `mutate_remove_stack` <a name="mutate_remove_stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack"></a>

```python
def mutate_remove_stack(
  stack: StackNode
) -> bool
```

Disassociate {@link StackNode} from this stage.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isStageNode">is_stage_node</a></code> | Indicates if node is a {@link StageNode}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.of">of</a></code> | Gets the {@link StageNode} containing a given resource. |

---

##### `is_stage_node` <a name="is_stage_node" id="@aws-prototyping-sdk/cdk-graph.StageNode.isStageNode"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.StageNode.is_stage_node(
  node: Node
)
```

Indicates if node is a {@link StageNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.isStageNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `of` <a name="of" id="@aws-prototyping-sdk/cdk-graph.StageNode.of"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.StageNode.of(
  node: Node
)
```

Gets the {@link StageNode} containing a given resource.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.of.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isDestroyed">is_destroyed</a></code> | <code>bool</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isMutated">is_mutated</a></code> | <code>bool</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.uuid">uuid</a></code> | <code>str</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.children">children</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.dependedOnBy">depended_on_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencies">dependencies</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencyLinks">dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.depth">depth</a></code> | <code>typing.Union[int, float]</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.id">id</a></code> | <code>str</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isAsset">is_asset</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCfnFqn">is_cfn_fqn</a></code> | <code>bool</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCluster">is_cluster</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCustomResource">is_custom_resource</a></code> | <code>bool</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isExtraneous">is_extraneous</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isGraphContainer">is_graph_container</a></code> | <code>bool</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isLeaf">is_leaf</a></code> | <code>bool</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isTopLevel">is_top_level</a></code> | <code>bool</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.links">links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.referencedBy">referenced_by</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.referenceLinks">reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.references">references</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseDependencyLinks">reverse_dependency_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseLinks">reverse_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseReferenceLinks">reverse_reference_links</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.scopes">scopes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.siblings">siblings</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnProps">cfn_props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnType">cfn_type</a></code> | <code>str</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfoFqn">construct_info_fqn</a></code> | <code>str</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.rootStack">root_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.stacks">stacks</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>]</code> | Gets all stacks contained by this stage. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Get *readonly* list of all flags.

---

##### `is_destroyed`<sup>Required</sup> <a name="is_destroyed" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isDestroyed"></a>

```python
is_destroyed: bool
```

- *Type:* bool

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `is_mutated`<sup>Required</sup> <a name="is_mutated" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isMutated"></a>

```python
is_mutated: bool
```

- *Type:* bool

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

Universally unique identifier.

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.children"></a>

```python
children: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get all direct child nodes.

---

##### `depended_on_by`<sup>Required</sup> <a name="depended_on_by" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependedOnBy"></a>

```python
depended_on_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencies"></a>

```python
dependencies: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependency_links`<sup>Required</sup> <a name="dependency_links" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencyLinks"></a>

```python
dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.depth"></a>

```python
depth: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is only unique within parent scope.

---

##### `is_asset`<sup>Required</sup> <a name="is_asset" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isAsset"></a>

```python
is_asset: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `is_cfn_fqn`<sup>Required</sup> <a name="is_cfn_fqn" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCfnFqn"></a>

```python
is_cfn_fqn: bool
```

- *Type:* bool

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `is_cluster`<sup>Required</sup> <a name="is_cluster" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCluster"></a>

```python
is_cluster: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `is_custom_resource`<sup>Required</sup> <a name="is_custom_resource" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCustomResource"></a>

```python
is_custom_resource: bool
```

- *Type:* bool

Indicates if node is a *Custom Resource*.

---

##### `is_extraneous`<sup>Required</sup> <a name="is_extraneous" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isExtraneous"></a>

```python
is_extraneous: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `is_graph_container`<sup>Required</sup> <a name="is_graph_container" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isGraphContainer"></a>

```python
is_graph_container: bool
```

- *Type:* bool

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `is_leaf`<sup>Required</sup> <a name="is_leaf" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isLeaf"></a>

```python
is_leaf: bool
```

- *Type:* bool

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `is_top_level`<sup>Required</sup> <a name="is_top_level" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isTopLevel"></a>

```python
is_top_level: bool
```

- *Type:* bool

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.links"></a>

```python
links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **source**.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `referenced_by`<sup>Required</sup> <a name="referenced_by" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.referencedBy"></a>

```python
referenced_by: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `reference_links`<sup>Required</sup> <a name="reference_links" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.referenceLinks"></a>

```python
reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.references"></a>

```python
references: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverse_dependency_links`<sup>Required</sup> <a name="reverse_dependency_links" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseDependencyLinks"></a>

```python
reverse_dependency_links: typing.List[Dependency]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverse_links`<sup>Required</sup> <a name="reverse_links" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseLinks"></a>

```python
reverse_links: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all links (edges) in which this node is the **target**.

---

##### `reverse_reference_links`<sup>Required</sup> <a name="reverse_reference_links" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseReferenceLinks"></a>

```python
reverse_reference_links: typing.List[Reference]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.scopes"></a>

```python
scopes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.siblings"></a>

```python
siblings: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Get list of *siblings* of this node.

---

##### `cfn_props`<sup>Optional</sup> <a name="cfn_props" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnProps"></a>

```python
cfn_props: PlainObject
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Get the CloudFormation resource type for this node.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `construct_info_fqn`<sup>Optional</sup> <a name="construct_info_fqn" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfoFqn"></a>

```python
construct_info_fqn: str
```

- *Type:* str

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `root_stack`<sup>Optional</sup> <a name="root_stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.rootStack"></a>

```python
root_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `stacks`<sup>Required</sup> <a name="stacks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.stacks"></a>

```python
stacks: typing.List[StackNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>]

Gets all stacks contained by this stage.

---


### Store <a name="Store" id="@aws-prototyping-sdk/cdk-graph.Store"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore">ISerializableGraphStore</a>

Store class provides the in-memory database-like interface for managing all entities in the graph.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Store.Initializer"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Store(
  allow_destructive_mutations: bool = None
)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.Initializer.parameter.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | *No description.* |

---

##### `allow_destructive_mutations`<sup>Optional</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.Store.Initializer.parameter.allowDestructiveMutations"></a>

- *Type:* bool

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addEdge">add_edge</a></code> | Add **edge** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addNode">add_node</a></code> | Add **node** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addStack">add_stack</a></code> | Add **stack** node to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addStage">add_stage</a></code> | Add **stage** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.clone">clone</a></code> | Clone the store to allow destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId">compute_logical_universal_id</a></code> | Compute **universal** *logicalId* based on parent stack and construct *logicalId* (`<stack>:<logicalId>`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn">find_node_by_import_arn</a></code> | Attempts to lookup the {@link Node} associated with a given *import arn token*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId">find_node_by_logical_id</a></code> | Find node within given **stack** with given *logicalId*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId">find_node_by_logical_universal_id</a></code> | Find node by **universal** *logicalId* (`<stack>:<logicalId>`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getEdge">get_edge</a></code> | Get stored **edge** by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getNode">get_node</a></code> | Get stored **node** by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getStack">get_stack</a></code> | Get stored **stack** node by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getStage">get_stage</a></code> | Get stored **stage** node by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge">mutate_remove_edge</a></code> | Remove **edge** from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode">mutate_remove_node</a></code> | Remove **node** from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.recordImportArn">record_import_arn</a></code> | Records arn tokens from imported resources (eg: `s3.Bucket.fromBucketArn()`) that are used for resolving references. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId">record_logical_id</a></code> | Record a **universal** *logicalId* to node mapping in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.serialize">serialize</a></code> | Serialize the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.verifyDestructiveMutationAllowed">verify_destructive_mutation_allowed</a></code> | Verifies that the store allows destructive mutations. |

---

##### `add_edge` <a name="add_edge" id="@aws-prototyping-sdk/cdk-graph.Store.addEdge"></a>

```python
def add_edge(
  edge: Edge
) -> None
```

Add **edge** to the store.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Store.addEdge.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `add_node` <a name="add_node" id="@aws-prototyping-sdk/cdk-graph.Store.addNode"></a>

```python
def add_node(
  node: Node
) -> None
```

Add **node** to the store.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Store.addNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `add_stack` <a name="add_stack" id="@aws-prototyping-sdk/cdk-graph.Store.addStack"></a>

```python
def add_stack(
  stack: StackNode
) -> None
```

Add **stack** node to the store.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.addStack.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

##### `add_stage` <a name="add_stage" id="@aws-prototyping-sdk/cdk-graph.Store.addStage"></a>

```python
def add_stage(
  stage: StageNode
) -> None
```

Add **stage** to the store.

###### `stage`<sup>Required</sup> <a name="stage" id="@aws-prototyping-sdk/cdk-graph.Store.addStage.parameter.stage"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>

---

##### `clone` <a name="clone" id="@aws-prototyping-sdk/cdk-graph.Store.clone"></a>

```python
def clone(
  allow_destructive_mutations: bool = None
) -> Store
```

Clone the store to allow destructive mutations.

###### `allow_destructive_mutations`<sup>Optional</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.Store.clone.parameter.allowDestructiveMutations"></a>

- *Type:* bool

Indicates if destructive mutations are allowed;

defaults to `true`

---

##### `compute_logical_universal_id` <a name="compute_logical_universal_id" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId"></a>

```python
def compute_logical_universal_id(
  stack: StackNode,
  logical_id: str
) -> str
```

Compute **universal** *logicalId* based on parent stack and construct *logicalId* (`<stack>:<logicalId>`).

Construct *logicalIds are only unique within their containing stack, so to use *logicalId*
lookups universally (like resolving references) we need a universal key.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

###### `logical_id`<sup>Required</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId.parameter.logicalId"></a>

- *Type:* str

---

##### `find_node_by_import_arn` <a name="find_node_by_import_arn" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn"></a>

```python
def find_node_by_import_arn(
  value: typing.Any
) -> Node
```

Attempts to lookup the {@link Node} associated with a given *import arn token*.

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn.parameter.value"></a>

- *Type:* typing.Any

Import arn value, which is either object to tokenize or already tokenized string.

---

##### `find_node_by_logical_id` <a name="find_node_by_logical_id" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId"></a>

```python
def find_node_by_logical_id(
  stack: StackNode,
  logical_id: str
) -> Node
```

Find node within given **stack** with given *logicalId*.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

###### `logical_id`<sup>Required</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId.parameter.logicalId"></a>

- *Type:* str

---

##### `find_node_by_logical_universal_id` <a name="find_node_by_logical_universal_id" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId"></a>

```python
def find_node_by_logical_universal_id(
  uid: str
) -> Node
```

Find node by **universal** *logicalId* (`<stack>:<logicalId>`).

###### `uid`<sup>Required</sup> <a name="uid" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId.parameter.uid"></a>

- *Type:* str

---

##### `get_edge` <a name="get_edge" id="@aws-prototyping-sdk/cdk-graph.Store.getEdge"></a>

```python
def get_edge(
  uuid: str
) -> Edge
```

Get stored **edge** by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getEdge.parameter.uuid"></a>

- *Type:* str

---

##### `get_node` <a name="get_node" id="@aws-prototyping-sdk/cdk-graph.Store.getNode"></a>

```python
def get_node(
  uuid: str
) -> Node
```

Get stored **node** by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getNode.parameter.uuid"></a>

- *Type:* str

---

##### `get_stack` <a name="get_stack" id="@aws-prototyping-sdk/cdk-graph.Store.getStack"></a>

```python
def get_stack(
  uuid: str
) -> StackNode
```

Get stored **stack** node by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getStack.parameter.uuid"></a>

- *Type:* str

---

##### `get_stage` <a name="get_stage" id="@aws-prototyping-sdk/cdk-graph.Store.getStage"></a>

```python
def get_stage(
  uuid: str
) -> StageNode
```

Get stored **stage** node by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getStage.parameter.uuid"></a>

- *Type:* str

---

##### `mutate_remove_edge` <a name="mutate_remove_edge" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge"></a>

```python
def mutate_remove_edge(
  edge: Edge
) -> bool
```

Remove **edge** from the store.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutate_remove_node` <a name="mutate_remove_node" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode"></a>

```python
def mutate_remove_node(
  node: Node
) -> bool
```

Remove **node** from the store.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `record_import_arn` <a name="record_import_arn" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn"></a>

```python
def record_import_arn(
  arn_token: str,
  resource: Node
) -> None
```

Records arn tokens from imported resources (eg: `s3.Bucket.fromBucketArn()`) that are used for resolving references.

###### `arn_token`<sup>Required</sup> <a name="arn_token" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn.parameter.arnToken"></a>

- *Type:* str

---

###### `resource`<sup>Required</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn.parameter.resource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `record_logical_id` <a name="record_logical_id" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId"></a>

```python
def record_logical_id(
  stack: StackNode,
  logical_id: str,
  resource: Node
) -> None
```

Record a **universal** *logicalId* to node mapping in the store.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

###### `logical_id`<sup>Required</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId.parameter.logicalId"></a>

- *Type:* str

---

###### `resource`<sup>Required</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId.parameter.resource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `serialize` <a name="serialize" id="@aws-prototyping-sdk/cdk-graph.Store.serialize"></a>

```python
def serialize() -> SGGraphStore
```

Serialize the store.

##### `verify_destructive_mutation_allowed` <a name="verify_destructive_mutation_allowed" id="@aws-prototyping-sdk/cdk-graph.Store.verifyDestructiveMutationAllowed"></a>

```python
def verify_destructive_mutation_allowed() -> None
```

Verifies that the store allows destructive mutations.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore">from_serialized_store</a></code> | Builds store from serialized store data. |

---

##### `from_serialized_store` <a name="from_serialized_store" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore"></a>

```python
import aws_prototyping_sdk.cdk_graph

aws_prototyping_sdk.cdk_graph.Store.from_serialized_store(
  edges: typing.List[SGEdge],
  tree: SGNode,
  version: str
)
```

Builds store from serialized store data.

###### `edges`<sup>Required</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore.parameter.edges"></a>

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.SGEdge">SGEdge</a>]

List of edges.

---

###### `tree`<sup>Required</sup> <a name="tree" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore.parameter.tree"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>

Node tree.

---

###### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore.parameter.version"></a>

- *Type:* str

Store version.

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.allowDestructiveMutations">allow_destructive_mutations</a></code> | <code>bool</code> | Indicates if the store allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.counts">counts</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts">IStoreCounts</a></code> | Get record of all store counters. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.edges">edges</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]</code> | Gets all stored **edges**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.nodes">nodes</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]</code> | Gets all stored **nodes**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.root">root</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a></code> | Root node in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.rootStacks">root_stacks</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>]</code> | Gets all stored **root stack** nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.stacks">stacks</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>]</code> | Gets all stored **stack** nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.stages">stages</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>]</code> | Gets all stored **stage** nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.version">version</a></code> | <code>str</code> | Current SemVer version of the store. |

---

##### `allow_destructive_mutations`<sup>Required</sup> <a name="allow_destructive_mutations" id="@aws-prototyping-sdk/cdk-graph.Store.property.allowDestructiveMutations"></a>

```python
allow_destructive_mutations: bool
```

- *Type:* bool

Indicates if the store allows destructive mutations.

Destructive mutations are only allowed on clones of the store to prevent plugins and filters from
mutating the store for downstream plugins.

All `mutate*` methods are only allowed on stores that allow destructive mutations.

This behavior may change in the future if the need arises for plugins to pass mutated stores
to downstream plugins. But it will be done cautiously with ensuring the intent of
downstream plugin is to receive the mutated store.

---

##### `counts`<sup>Required</sup> <a name="counts" id="@aws-prototyping-sdk/cdk-graph.Store.property.counts"></a>

```python
counts: IStoreCounts
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts">IStoreCounts</a>

Get record of all store counters.

---

##### `edges`<sup>Required</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.Store.property.edges"></a>

```python
edges: typing.List[Edge]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>]

Gets all stored **edges**.

---

##### `nodes`<sup>Required</sup> <a name="nodes" id="@aws-prototyping-sdk/cdk-graph.Store.property.nodes"></a>

```python
nodes: typing.List[Node]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>]

Gets all stored **nodes**.

---

##### `root`<sup>Required</sup> <a name="root" id="@aws-prototyping-sdk/cdk-graph.Store.property.root"></a>

```python
root: RootNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a>

Root node in the store.

The **root** node is not the computed root, but the graph root
which is auto-generated and can not be mutated.

---

##### `root_stacks`<sup>Required</sup> <a name="root_stacks" id="@aws-prototyping-sdk/cdk-graph.Store.property.rootStacks"></a>

```python
root_stacks: typing.List[StackNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>]

Gets all stored **root stack** nodes.

---

##### `stacks`<sup>Required</sup> <a name="stacks" id="@aws-prototyping-sdk/cdk-graph.Store.property.stacks"></a>

```python
stacks: typing.List[StackNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>]

Gets all stored **stack** nodes.

---

##### `stages`<sup>Required</sup> <a name="stages" id="@aws-prototyping-sdk/cdk-graph.Store.property.stages"></a>

```python
stages: typing.List[StageNode]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>]

Gets all stored **stage** nodes.

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.Store.property.version"></a>

```python
version: str
```

- *Type:* str

Current SemVer version of the store.

---


## Protocols <a name="Protocols" id="Protocols"></a>

### IAppNodeProps <a name="IAppNodeProps" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a>

{@link AppNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

### IAttributeReferenceProps <a name="IAttributeReferenceProps" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>

Attribute type reference props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.value">value</a></code> | <code>typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]</code> | Resolved attribute value. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.value"></a>

```python
value: typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]
```

- *Type:* typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]

Resolved attribute value.

---

### IBaseEntityDataProps <a name="IBaseEntityDataProps" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

Base interface for all store entities **data** props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

### IBaseEntityProps <a name="IBaseEntityProps" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

Base interface for all store entities props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

### ICdkGraphPlugin <a name="ICdkGraphPlugin" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>

CdkGraph **Plugin** interface.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.id">id</a></code> | <code>str</code> | Unique identifier for this plugin. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.version">version</a></code> | <code>str</code> | Plugin version. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.dependencies">dependencies</a></code> | <code>typing.List[str]</code> | List of plugins this plugin depends on, including optional semver version (eg: ["foo", "bar@1.2"]). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.bind">bind</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback">IGraphPluginBindCallback</a></code> | Binds the plugin to the CdkGraph instance. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.inspect">inspect</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback">IGraphVisitorCallback</a></code> | Node visitor callback for construct tree traversal. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.report">report</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphReportCallback">IGraphReportCallback</a></code> | Generate asynchronous reports based on the graph. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.synthesize">synthesize</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback">IGraphSynthesizeCallback</a></code> | Called during CDK synthesize to generate synchronous artifacts based on the in-memory graph passed to the plugin. |

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.id"></a>

```python
id: str
```

- *Type:* str

Unique identifier for this plugin.

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.version"></a>

```python
version: str
```

- *Type:* str

Plugin version.

---

##### `dependencies`<sup>Optional</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.dependencies"></a>

```python
dependencies: typing.List[str]
```

- *Type:* typing.List[str]

List of plugins this plugin depends on, including optional semver version (eg: ["foo", "bar@1.2"]).

---

##### `bind`<sup>Required</sup> <a name="bind" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.bind"></a>

```python
bind: IGraphPluginBindCallback
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback">IGraphPluginBindCallback</a>

Binds the plugin to the CdkGraph instance.

Enables plugins to receive base configs.

---

##### `inspect`<sup>Optional</sup> <a name="inspect" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.inspect"></a>

```python
inspect: IGraphVisitorCallback
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback">IGraphVisitorCallback</a>

Node visitor callback for construct tree traversal.

This follows IAspect.visit pattern, but the order
of visitor traversal in managed by the CdkGraph.

---

##### `report`<sup>Optional</sup> <a name="report" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.report"></a>

```python
report: IGraphReportCallback
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphReportCallback">IGraphReportCallback</a>

Generate asynchronous reports based on the graph.

This is not automatically called when synthesizing CDK.
Developer must explicitly add `await graphInstance.report()` to the CDK bin or invoke this outside
of the CDK synth. In either case, the plugin receives the in-memory graph interface when invoked, as the
CdkGraph will deserialize the graph prior to invoking the plugin report.

---

##### `synthesize`<sup>Optional</sup> <a name="synthesize" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.synthesize"></a>

```python
synthesize: IGraphSynthesizeCallback
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback">IGraphSynthesizeCallback</a>

Called during CDK synthesize to generate synchronous artifacts based on the in-memory graph passed to the plugin.

This is called in fifo order of plugins.

---

### ICfnResourceNodeProps <a name="ICfnResourceNodeProps" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>

CfnResourceNode props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.importArnToken">import_arn_token</a></code> | <code>str</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | *No description.* |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `import_arn_token`<sup>Optional</sup> <a name="import_arn_token" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.importArnToken"></a>

```python
import_arn_token: str
```

- *Type:* str

---

##### `node_type`<sup>Optional</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

---

### IEdgePredicate <a name="IEdgePredicate" id="@aws-prototyping-sdk/cdk-graph.IEdgePredicate"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Predicate to match edge.



### IEdgeProps <a name="IEdgeProps" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>

Edge props interface.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.edgeType">edge_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.direction"></a>

```python
direction: EdgeDirectionEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edge_type`<sup>Required</sup> <a name="edge_type" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.edgeType"></a>

```python
edge_type: EdgeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

### IFilterFocusCallback <a name="IFilterFocusCallback" id="@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a>

Determines focus node of filter plan.



### IFindEdgeOptions <a name="IFindEdgeOptions" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

Options for edge based search operations.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.order">order</a></code> | <code>constructs.ConstructOrder</code> | The order of traversal during search path. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.predicate">predicate</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a></code> | The predicate to match edges(s). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.reverse">reverse</a></code> | <code>bool</code> | Indicates reverse order. |

---

##### `order`<sup>Optional</sup> <a name="order" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.order"></a>

```python
order: ConstructOrder
```

- *Type:* constructs.ConstructOrder

The order of traversal during search path.

---

##### `predicate`<sup>Optional</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.predicate"></a>

```python
predicate: IEdgePredicate
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

The predicate to match edges(s).

---

##### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.reverse"></a>

```python
reverse: bool
```

- *Type:* bool

Indicates reverse order.

---

### IFindNodeOptions <a name="IFindNodeOptions" id="@aws-prototyping-sdk/cdk-graph.IFindNodeOptions"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

Options for node based search operations.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.order">order</a></code> | <code>constructs.ConstructOrder</code> | The order of traversal during search path. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.predicate">predicate</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a></code> | The predicate to match node(s). |

---

##### `order`<sup>Optional</sup> <a name="order" id="@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.order"></a>

```python
order: ConstructOrder
```

- *Type:* constructs.ConstructOrder

The order of traversal during search path.

---

##### `predicate`<sup>Optional</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.predicate"></a>

```python
predicate: INodePredicate
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

The predicate to match node(s).

---

### IGraphFilter <a name="IGraphFilter" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a>

Graph filter.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.allNodes">all_nodes</a></code> | <code>bool</code> | Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.edge">edge</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a></code> | Predicate to match edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.inverse">inverse</a></code> | <code>bool</code> | Indicates that matches will be filtered, as opposed to non-matches. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.node">node</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a></code> | Predicate to match nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.strategy">strategy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy">FilterStrategy</a></code> | Filter strategy to apply to matching nodes. |

---

##### `all_nodes`<sup>Optional</sup> <a name="all_nodes" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.allNodes"></a>

```python
all_nodes: bool
```

- *Type:* bool

Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes.

By enabling this, all Stages, Stacks, and structural construct boundaries will be filtered as well.
In general, most users intent is to operate against resources and desire to preserve structural groupings,
which is common in most Cfn/Cdk based filtering where inputs are "include" lists.

Defaults to value of containing {@link IGraphFilterPlan.allNodes}

---

##### `edge`<sup>Optional</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.edge"></a>

```python
edge: IEdgePredicate
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Predicate to match edges.

Edges are evaluated after nodes are filtered.

---

##### `inverse`<sup>Optional</sup> <a name="inverse" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.inverse"></a>

```python
inverse: bool
```

- *Type:* bool
- *Default:* false - Preserve matches, and filter out non-matches.

Indicates that matches will be filtered, as opposed to non-matches.

The default follows common [Javascript Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
precedence of preserving matches during filtering, while pruning non-matches.

---

##### `node`<sup>Optional</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.node"></a>

```python
node: INodePredicate
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match nodes.

---

##### `strategy`<sup>Optional</sup> <a name="strategy" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.strategy"></a>

```python
strategy: FilterStrategy
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy">FilterStrategy</a>
- *Default:* {FilterStrategy.PRUNE}

Filter strategy to apply to matching nodes.

Edges do not have a strategy, they are always pruned.

---

### IGraphFilterPlan <a name="IGraphFilterPlan" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan">IGraphFilterPlan</a>

Graph filter plan.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.allNodes">all_nodes</a></code> | <code>bool</code> | Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.filters">filters</a></code> | <code>typing.List[typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter">IGraphStoreFilter</a>]]</code> | Ordered list of {@link IGraphFilter} and {@link IGraphStoreFilter} filters to apply to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.focus">focus</a></code> | <code>typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig">IGraphFilterPlanFocusConfig</a>]</code> | Config to focus the graph on specific node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.order">order</a></code> | <code>constructs.ConstructOrder</code> | The order to visit nodes and edges during filtering. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.preset">preset</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset">FilterPreset</a></code> | Optional preset filter to apply before other filters. |

---

##### `all_nodes`<sup>Optional</sup> <a name="all_nodes" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.allNodes"></a>

```python
all_nodes: bool
```

- *Type:* bool
- *Default:* false By default only Resource and CfnResource nodes are filtered.

Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes.

By enabling this, all Stages, Stacks, and structural construct boundaries will be filtered as well.
In general, most users intent is to operate against resources and desire to preserve structural groupings,
which is common in most Cfn/Cdk based filtering where inputs are "include" lists.

---

##### `filters`<sup>Optional</sup> <a name="filters" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.filters"></a>

```python
filters: typing.List[typing.Union[IGraphFilter, IGraphStoreFilter]]
```

- *Type:* typing.List[typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter">IGraphStoreFilter</a>]]

Ordered list of {@link IGraphFilter} and {@link IGraphStoreFilter} filters to apply to the store.

* Filters are applied *after* the preset filtering is applied if present.
* Filters are applied sequentially against all nodes, as opposed to IAspect.visitor pattern
  which are sequentially applied per node.

---

##### `focus`<sup>Optional</sup> <a name="focus" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.focus"></a>

```python
focus: typing.Union[Node, IFilterFocusCallback, IGraphFilterPlanFocusConfig]
```

- *Type:* typing.Union[<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig">IGraphFilterPlanFocusConfig</a>]

Config to focus the graph on specific node.

---

##### `order`<sup>Optional</sup> <a name="order" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.order"></a>

```python
order: ConstructOrder
```

- *Type:* constructs.ConstructOrder
- *Default:* {ConstructOrder.PREORDER}

The order to visit nodes and edges during filtering.

---

##### `preset`<sup>Optional</sup> <a name="preset" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.preset"></a>

```python
preset: FilterPreset
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset">FilterPreset</a>

Optional preset filter to apply before other filters.

---

### IGraphPluginBindCallback <a name="IGraphPluginBindCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback">IGraphPluginBindCallback</a>

Callback signature for graph `Plugin.bind` operation.



### IGraphReportCallback <a name="IGraphReportCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphReportCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphReportCallback">IGraphReportCallback</a>

Callback signature for graph `Plugin.report` operation.



### IGraphStoreFilter <a name="IGraphStoreFilter" id="@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter">IGraphStoreFilter</a>

Store filter callback interface used to perform filtering operations directly against the store, as opposed to using {@link IGraphFilter} definitions.



### IGraphSynthesizeCallback <a name="IGraphSynthesizeCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback">IGraphSynthesizeCallback</a>

Callback signature for graph `Plugin.synthesize` operation.



### IGraphVisitorCallback <a name="IGraphVisitorCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback">IGraphVisitorCallback</a>

Callback signature for graph `Plugin.inspect` operation.



### INestedStackNodeProps <a name="INestedStackNodeProps" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>

{@link NestedStackNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parentStack">parent_stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Parent stack. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `node_type`<sup>Optional</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `parent_stack`<sup>Required</sup> <a name="parent_stack" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parentStack"></a>

```python
parent_stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Parent stack.

---

### INodePredicate <a name="INodePredicate" id="@aws-prototyping-sdk/cdk-graph.INodePredicate"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match node.



### INodeProps <a name="INodeProps" id="@aws-prototyping-sdk/cdk-graph.INodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>

Node props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `node_type`<sup>Required</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

### IOutputNodeProps <a name="IOutputNodeProps" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>

OutputNode props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.value">value</a></code> | <code>typing.Any</code> | Resolved output value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.description">description</a></code> | <code>str</code> | Description. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.exportName">export_name</a></code> | <code>str</code> | Export name. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.value"></a>

```python
value: typing.Any
```

- *Type:* typing.Any

Resolved output value.

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.description"></a>

```python
description: str
```

- *Type:* str

Description.

---

##### `export_name`<sup>Optional</sup> <a name="export_name" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.exportName"></a>

```python
export_name: str
```

- *Type:* str

Export name.

---

### IParameterNodeProps <a name="IParameterNodeProps" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>

{@link ParameterNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parameterType">parameter_type</a></code> | <code>str</code> | Parameter type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.value">value</a></code> | <code>typing.Any</code> | Resolved value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.description">description</a></code> | <code>str</code> | Description. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `parameter_type`<sup>Required</sup> <a name="parameter_type" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parameterType"></a>

```python
parameter_type: str
```

- *Type:* str

Parameter type.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.value"></a>

```python
value: typing.Any
```

- *Type:* typing.Any

Resolved value.

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.description"></a>

```python
description: str
```

- *Type:* str

Description.

---

### IReferenceProps <a name="IReferenceProps" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>

Reference edge props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.referenceType">reference_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Type of reference. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `reference_type`<sup>Optional</sup> <a name="reference_type" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.referenceType"></a>

```python
reference_type: ReferenceTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Type of reference.

---

### IResourceNodeProps <a name="IResourceNodeProps" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>

ResourceNode props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cdkOwned">cdk_owned</a></code> | <code>bool</code> | Indicates if this resource is owned by cdk (defined in cdk library). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `cdk_owned`<sup>Required</sup> <a name="cdk_owned" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cdkOwned"></a>

```python
cdk_owned: bool
```

- *Type:* bool

Indicates if this resource is owned by cdk (defined in cdk library).

---

##### `node_type`<sup>Optional</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

### ISerializableEdge <a name="ISerializableEdge" id="@aws-prototyping-sdk/cdk-graph.ISerializableEdge"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference">AttributeReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ImportReference">ImportReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEdge">ISerializableEdge</a>

Interface for serializable graph edge entity.



### ISerializableEntity <a name="ISerializableEntity" id="@aws-prototyping-sdk/cdk-graph.ISerializableEntity"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.AppNode">AppNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference">AttributeReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity">BaseEntity</a>, <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ImportReference">ImportReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode">NestedStackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEntity">ISerializableEntity</a>

Interface for serializable graph entities.



### ISerializableGraphStore <a name="ISerializableGraphStore" id="@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore">ISerializableGraphStore</a>

Interface for serializable graph store.

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore.serialize">serialize</a></code> | *No description.* |

---

##### `serialize` <a name="serialize" id="@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore.serialize"></a>

```python
def serialize() -> SGGraphStore
```


### ISerializableNode <a name="ISerializableNode" id="@aws-prototyping-sdk/cdk-graph.ISerializableNode"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.AppNode">AppNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode">NestedStackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableNode">ISerializableNode</a>

Interface for serializable graph node entity.



### IStackNodeProps <a name="IStackNodeProps" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>

{@link StackNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.nodeType">node_type</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `node_type`<sup>Optional</sup> <a name="node_type" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.nodeType"></a>

```python
node_type: NodeTypeEnum
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

### IStoreCounts <a name="IStoreCounts" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts">IStoreCounts</a>

Interface for store counts.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.cfnResources">cfn_resources</a></code> | <code>typing.Mapping[typing.Union[int, float]]</code> | Returns {@link ICounterRecord} containing total number of each *cfnResourceType*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edges">edges</a></code> | <code>typing.Union[int, float]</code> | Counts total number of edges in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edgeTypes">edge_types</a></code> | <code>typing.Mapping[typing.Union[int, float]]</code> | Returns {@link ICounterRecord} containing total number of each *edge type* ({@link EdgeTypeEnum}). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodes">nodes</a></code> | <code>typing.Union[int, float]</code> | Counts total number of nodes in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodeTypes">node_types</a></code> | <code>typing.Mapping[typing.Union[int, float]]</code> | Returns {@link ICounterRecord} containing total number of each *node type* ({@link NodeTypeEnum}). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stacks">stacks</a></code> | <code>typing.Union[int, float]</code> | Counts total number of stacks in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stages">stages</a></code> | <code>typing.Union[int, float]</code> | Counts total number of stages in the store. |

---

##### `cfn_resources`<sup>Required</sup> <a name="cfn_resources" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.cfnResources"></a>

```python
cfn_resources: typing.Mapping[typing.Union[int, float]]
```

- *Type:* typing.Mapping[typing.Union[int, float]]

Returns {@link ICounterRecord} containing total number of each *cfnResourceType*.

---

##### `edges`<sup>Required</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edges"></a>

```python
edges: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Counts total number of edges in the store.

---

##### `edge_types`<sup>Required</sup> <a name="edge_types" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edgeTypes"></a>

```python
edge_types: typing.Mapping[typing.Union[int, float]]
```

- *Type:* typing.Mapping[typing.Union[int, float]]

Returns {@link ICounterRecord} containing total number of each *edge type* ({@link EdgeTypeEnum}).

---

##### `nodes`<sup>Required</sup> <a name="nodes" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodes"></a>

```python
nodes: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Counts total number of nodes in the store.

---

##### `node_types`<sup>Required</sup> <a name="node_types" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodeTypes"></a>

```python
node_types: typing.Mapping[typing.Union[int, float]]
```

- *Type:* typing.Mapping[typing.Union[int, float]]

Returns {@link ICounterRecord} containing total number of each *node type* ({@link NodeTypeEnum}).

---

##### `stacks`<sup>Required</sup> <a name="stacks" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stacks"></a>

```python
stacks: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Counts total number of stacks in the store.

---

##### `stages`<sup>Required</sup> <a name="stages" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stages"></a>

```python
stages: typing.Union[int, float]
```

- *Type:* typing.Union[int, float]

Counts total number of stages in the store.

---

### ITypedEdgeProps <a name="ITypedEdgeProps" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

Base edge props agnostic to edge type.

Used for extending per edge class with type specifics.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.source"></a>

```python
source: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.target"></a>

```python
target: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

### ITypedNodeProps <a name="ITypedNodeProps" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

Base node props agnostic to node type.

Used for extending per node class with type specifics.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.attributes">attributes</a></code> | <code>typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.flags">flags</a></code> | <code>typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.metadata">metadata</a></code> | <code>typing.List[constructs.MetadataEntry]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.tags">tags</a></code> | <code>typing.Mapping[str]</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.uuid">uuid</a></code> | <code>str</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.id">id</a></code> | <code>str</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.path">path</a></code> | <code>str</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.cfnType">cfn_type</a></code> | <code>str</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.constructInfo">construct_info</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.logicalId">logical_id</a></code> | <code>str</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.attributes"></a>

```python
attributes: typing.Mapping[typing.Union[str, typing.Union[int, float], bool, PlainObject, typing.List[typing.Union[str, typing.Union[int, float], bool, PlainObject]]]]
```

- *Type:* typing.Mapping[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>, typing.List[typing.Union[str, typing.Union[int, float], bool, <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>]]]]

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.flags"></a>

```python
flags: typing.List[FlagEnum]
```

- *Type:* typing.List[<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.metadata"></a>

```python
metadata: typing.List[MetadataEntry]
```

- *Type:* typing.List[constructs.MetadataEntry]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.tags"></a>

```python
tags: typing.Mapping[str]
```

- *Type:* typing.Mapping[str]

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.store"></a>

```python
store: Store
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.uuid"></a>

```python
uuid: str
```

- *Type:* str

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.id"></a>

```python
id: str
```

- *Type:* str

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.path"></a>

```python
path: str
```

- *Type:* str

Path of the node.

---

##### `cfn_type`<sup>Optional</sup> <a name="cfn_type" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.cfnType"></a>

```python
cfn_type: str
```

- *Type:* str

Type of CloudFormation resource.

---

##### `construct_info`<sup>Optional</sup> <a name="construct_info" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.constructInfo"></a>

```python
construct_info: ConstructInfo
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logical_id`<sup>Optional</sup> <a name="logical_id" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.logicalId"></a>

```python
logical_id: str
```

- *Type:* str

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.parent"></a>

```python
parent: Node
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.stack"></a>

```python
stack: StackNode
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

## Enums <a name="Enums" id="Enums"></a>

### CdkConstructIds <a name="CdkConstructIds" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds"></a>

Common cdk construct ids.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkConstructIds.DEFAULT">DEFAULT</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkConstructIds.RESOURCE">RESOURCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkConstructIds.EXPORTS">EXPORTS</a></code> | *No description.* |

---

##### `DEFAULT` <a name="DEFAULT" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds.DEFAULT"></a>

---


##### `RESOURCE` <a name="RESOURCE" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds.RESOURCE"></a>

---


##### `EXPORTS` <a name="EXPORTS" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds.EXPORTS"></a>

---


### CdkGraphArtifacts <a name="CdkGraphArtifacts" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts"></a>

CdkGraph core artifacts.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH_METADATA">GRAPH_METADATA</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH">GRAPH</a></code> | *No description.* |

---

##### `GRAPH_METADATA` <a name="GRAPH_METADATA" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH_METADATA"></a>

---


##### `GRAPH` <a name="GRAPH" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH"></a>

---


### CfnAttributesEnum <a name="CfnAttributesEnum" id="@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum"></a>

Common cfn attribute keys.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.TYPE">TYPE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.PROPS">PROPS</a></code> | *No description.* |

---

##### `TYPE` <a name="TYPE" id="@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.TYPE"></a>

---


##### `PROPS` <a name="PROPS" id="@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.PROPS"></a>

---


### ConstructInfoFqnEnum <a name="ConstructInfoFqnEnum" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum"></a>

Commonly used cdk construct info fqn (jsii fully-qualified ids).

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.APP">APP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP_MONO">PDKAPP_MONO</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP">PDKAPP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STAGE">STAGE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STACK">STACK</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.NESTED_STACK">NESTED_STACK</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_STACK">CFN_STACK</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_OUTPUT">CFN_OUTPUT</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PARAMETER">CFN_PARAMETER</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE">CUSTOM_RESOURCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.AWS_CUSTOM_RESOURCE">AWS_CUSTOM_RESOURCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER">CUSTOM_RESOURCE_PROVIDER</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER_2">CUSTOM_RESOURCE_PROVIDER_2</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA">LAMBDA</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA">CFN_LAMBDA</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_VERSION">LAMBDA_LAYER_VERSION</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_LAYER_VERSION">CFN_LAMBDA_LAYER_VERSION</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_ALIAS">LAMBDA_ALIAS</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_ALIAS">CFN_LAMBDA_ALIAS</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_BASE">LAMBDA_BASE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_SINGLETON">LAMBDA_SINGLETON</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_AWSCLI">LAMBDA_LAYER_AWSCLI</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_PERMISSIONS">CFN_LAMBDA_PERMISSIONS</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ASSET_STAGING">ASSET_STAGING</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.S3_ASSET">S3_ASSET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ECR_TARBALL_ASSET">ECR_TARBALL_ASSET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.EC2_INSTANCE">EC2_INSTANCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_EC2_INSTANCE">CFN_EC2_INSTANCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.SECURITY_GROUP">SECURITY_GROUP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_SECURITY_GROUP">CFN_SECURITY_GROUP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.VPC">VPC</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_VPC">CFN_VPC</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PRIVATE_SUBNET">PRIVATE_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PRIVATE_SUBNET">CFN_PRIVATE_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PUBLIC_SUBNET">PUBLIC_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PUBLIC_SUBNET">CFN_PUBLIC_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.IAM_ROLE">IAM_ROLE</a></code> | *No description.* |

---

##### `APP` <a name="APP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.APP"></a>

---


##### `PDKAPP_MONO` <a name="PDKAPP_MONO" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP_MONO"></a>

---


##### `PDKAPP` <a name="PDKAPP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP"></a>

---


##### `STAGE` <a name="STAGE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STAGE"></a>

---


##### `STACK` <a name="STACK" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STACK"></a>

---


##### `NESTED_STACK` <a name="NESTED_STACK" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.NESTED_STACK"></a>

---


##### `CFN_STACK` <a name="CFN_STACK" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_STACK"></a>

---


##### `CFN_OUTPUT` <a name="CFN_OUTPUT" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_OUTPUT"></a>

---


##### `CFN_PARAMETER` <a name="CFN_PARAMETER" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PARAMETER"></a>

---


##### `CUSTOM_RESOURCE` <a name="CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE"></a>

---


##### `AWS_CUSTOM_RESOURCE` <a name="AWS_CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.AWS_CUSTOM_RESOURCE"></a>

---


##### `CUSTOM_RESOURCE_PROVIDER` <a name="CUSTOM_RESOURCE_PROVIDER" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER"></a>

---


##### `CUSTOM_RESOURCE_PROVIDER_2` <a name="CUSTOM_RESOURCE_PROVIDER_2" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER_2"></a>

---


##### `LAMBDA` <a name="LAMBDA" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA"></a>

---


##### `CFN_LAMBDA` <a name="CFN_LAMBDA" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA"></a>

---


##### `LAMBDA_LAYER_VERSION` <a name="LAMBDA_LAYER_VERSION" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_VERSION"></a>

---


##### `CFN_LAMBDA_LAYER_VERSION` <a name="CFN_LAMBDA_LAYER_VERSION" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_LAYER_VERSION"></a>

---


##### `LAMBDA_ALIAS` <a name="LAMBDA_ALIAS" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_ALIAS"></a>

---


##### `CFN_LAMBDA_ALIAS` <a name="CFN_LAMBDA_ALIAS" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_ALIAS"></a>

---


##### `LAMBDA_BASE` <a name="LAMBDA_BASE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_BASE"></a>

---


##### `LAMBDA_SINGLETON` <a name="LAMBDA_SINGLETON" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_SINGLETON"></a>

---


##### `LAMBDA_LAYER_AWSCLI` <a name="LAMBDA_LAYER_AWSCLI" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_AWSCLI"></a>

---


##### `CFN_LAMBDA_PERMISSIONS` <a name="CFN_LAMBDA_PERMISSIONS" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_PERMISSIONS"></a>

---


##### `ASSET_STAGING` <a name="ASSET_STAGING" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ASSET_STAGING"></a>

---


##### `S3_ASSET` <a name="S3_ASSET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.S3_ASSET"></a>

---


##### `ECR_TARBALL_ASSET` <a name="ECR_TARBALL_ASSET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ECR_TARBALL_ASSET"></a>

---


##### `EC2_INSTANCE` <a name="EC2_INSTANCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.EC2_INSTANCE"></a>

---


##### `CFN_EC2_INSTANCE` <a name="CFN_EC2_INSTANCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_EC2_INSTANCE"></a>

---


##### `SECURITY_GROUP` <a name="SECURITY_GROUP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.SECURITY_GROUP"></a>

---


##### `CFN_SECURITY_GROUP` <a name="CFN_SECURITY_GROUP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_SECURITY_GROUP"></a>

---


##### `VPC` <a name="VPC" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.VPC"></a>

---


##### `CFN_VPC` <a name="CFN_VPC" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_VPC"></a>

---


##### `PRIVATE_SUBNET` <a name="PRIVATE_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PRIVATE_SUBNET"></a>

---


##### `CFN_PRIVATE_SUBNET` <a name="CFN_PRIVATE_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PRIVATE_SUBNET"></a>

---


##### `PUBLIC_SUBNET` <a name="PUBLIC_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PUBLIC_SUBNET"></a>

---


##### `CFN_PUBLIC_SUBNET` <a name="CFN_PUBLIC_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PUBLIC_SUBNET"></a>

---


##### `IAM_ROLE` <a name="IAM_ROLE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.IAM_ROLE"></a>

---


### EdgeDirectionEnum <a name="EdgeDirectionEnum" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum"></a>

EdgeDirection specifies in which direction the edge is directed or if it is undirected.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.NONE">NONE</a></code> | Indicates that edge is *undirected*; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.FORWARD">FORWARD</a></code> | Indicates the edge is *directed* from the **source** to the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BACK">BACK</a></code> | Indicates the edge is *directed* from the **target** to the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BOTH">BOTH</a></code> | Indicates the edge is *bi-directional*. |

---

##### `NONE` <a name="NONE" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.NONE"></a>

Indicates that edge is *undirected*;

meaning there is no directional relationship between the **source** and **target**.

---


##### `FORWARD` <a name="FORWARD" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.FORWARD"></a>

Indicates the edge is *directed* from the **source** to the **target**.

---


##### `BACK` <a name="BACK" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BACK"></a>

Indicates the edge is *directed* from the **target** to the **source**.

---


##### `BOTH` <a name="BOTH" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BOTH"></a>

Indicates the edge is *bi-directional*.

---


### EdgeTypeEnum <a name="EdgeTypeEnum" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum"></a>

Edge types handles by the graph.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.CUSTOM">CUSTOM</a></code> | Custom edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.REFERENCE">REFERENCE</a></code> | Reference edge (Ref, Fn::GetAtt, Fn::ImportValue). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.DEPENDENCY">DEPENDENCY</a></code> | CloudFormation dependency edge. |

---

##### `CUSTOM` <a name="CUSTOM" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.CUSTOM"></a>

Custom edge.

---


##### `REFERENCE` <a name="REFERENCE" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.REFERENCE"></a>

Reference edge (Ref, Fn::GetAtt, Fn::ImportValue).

---


##### `DEPENDENCY` <a name="DEPENDENCY" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.DEPENDENCY"></a>

CloudFormation dependency edge.

---


### FilterPreset <a name="FilterPreset" id="@aws-prototyping-sdk/cdk-graph.FilterPreset"></a>

Filter presets.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset.COMPACT">COMPACT</a></code> | Collapses extraneous nodes to parent and cdk created nodes on themselves, and prunes extraneous edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset.NON_EXTRANEOUS">NON_EXTRANEOUS</a></code> | Collapses extraneous nodes to parent and prunes extraneous edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset.NONE">NONE</a></code> | No filtering is performed which will output **verbose** graph. |

---

##### `COMPACT` <a name="COMPACT" id="@aws-prototyping-sdk/cdk-graph.FilterPreset.COMPACT"></a>

Collapses extraneous nodes to parent and cdk created nodes on themselves, and prunes extraneous edges.

This most closely represents the developers code for the current application
and reduces the noise one expects.

---


##### `NON_EXTRANEOUS` <a name="NON_EXTRANEOUS" id="@aws-prototyping-sdk/cdk-graph.FilterPreset.NON_EXTRANEOUS"></a>

Collapses extraneous nodes to parent and prunes extraneous edges.

---


##### `NONE` <a name="NONE" id="@aws-prototyping-sdk/cdk-graph.FilterPreset.NONE"></a>

No filtering is performed which will output **verbose** graph.

---


### FilterStrategy <a name="FilterStrategy" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy"></a>

Filter strategy to apply to filter matches.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy.PRUNE">PRUNE</a></code> | Remove filtered entity and all its edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE">COLLAPSE</a></code> | Collapse all child entities of filtered entity into filtered entity; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE_TO_PARENT">COLLAPSE_TO_PARENT</a></code> | Collapse all filtered entities into their parent entity; |

---

##### `PRUNE` <a name="PRUNE" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy.PRUNE"></a>

Remove filtered entity and all its edges.

---


##### `COLLAPSE` <a name="COLLAPSE" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE"></a>

Collapse all child entities of filtered entity into filtered entity;

and hoist all edges.

---


##### `COLLAPSE_TO_PARENT` <a name="COLLAPSE_TO_PARENT" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE_TO_PARENT"></a>

Collapse all filtered entities into their parent entity;

and hoist its edges to parent.

---


### FlagEnum <a name="FlagEnum" id="@aws-prototyping-sdk/cdk-graph.FlagEnum"></a>

Graph flags.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CLUSTER">CLUSTER</a></code> | Indicates that node is a cluster (container) and treated like an emphasized subgraph. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.GRAPH_CONTAINER">GRAPH_CONTAINER</a></code> | Indicates that node is non-resource container (Root, App) and used for structural purpose in the graph only. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.EXTRANEOUS">EXTRANEOUS</a></code> | Indicates that the entity is extraneous and considered collapsible to parent without impact of intent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.ASSET">ASSET</a></code> | Indicates node is considered a CDK Asset (Lambda Code, Docker Image, etc). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CDK_OWNED">CDK_OWNED</a></code> | Indicates that node was created by CDK. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CFN_FQN">CFN_FQN</a></code> | Indicates node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CLOSED_EDGE">CLOSED_EDGE</a></code> | Indicates that edge is closed; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.MUTATED">MUTATED</a></code> | Indicates that entity was mutated; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.IMPORT">IMPORT</a></code> | Indicates that resource is imported into CDK (eg: `lambda.Function.fromFunctionName()`, `s3.Bucket.fromBucketArn()`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CUSTOM_RESOURCE">CUSTOM_RESOURCE</a></code> | Indicates if node is a CustomResource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_CUSTOM_RESOURCE">AWS_CUSTOM_RESOURCE</a></code> | Indicates if node is an AwsCustomResource, which is a custom resource that simply calls the AWS SDK API via singleton provider. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_API_CALL_LAMBDA">AWS_API_CALL_LAMBDA</a></code> | Indicates if lambda function resource is a singleton AWS API call lambda for AwsCustomResources. |

---

##### `CLUSTER` <a name="CLUSTER" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CLUSTER"></a>

Indicates that node is a cluster (container) and treated like an emphasized subgraph.

---


##### `GRAPH_CONTAINER` <a name="GRAPH_CONTAINER" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.GRAPH_CONTAINER"></a>

Indicates that node is non-resource container (Root, App) and used for structural purpose in the graph only.

---


##### `EXTRANEOUS` <a name="EXTRANEOUS" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.EXTRANEOUS"></a>

Indicates that the entity is extraneous and considered collapsible to parent without impact of intent.

---


##### `ASSET` <a name="ASSET" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.ASSET"></a>

Indicates node is considered a CDK Asset (Lambda Code, Docker Image, etc).

---


##### `CDK_OWNED` <a name="CDK_OWNED" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CDK_OWNED"></a>

Indicates that node was created by CDK.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Resource.html#static-iswbrownedwbrresourceconstruct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Resource.html#static-iswbrownedwbrresourceconstruct)

---


##### `CFN_FQN` <a name="CFN_FQN" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CFN_FQN"></a>

Indicates node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

---


##### `CLOSED_EDGE` <a name="CLOSED_EDGE" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CLOSED_EDGE"></a>

Indicates that edge is closed;

meaning `source === target`. This flag only gets applied on creation of edge, not during mutations to maintain initial intent.

---


##### `MUTATED` <a name="MUTATED" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.MUTATED"></a>

Indicates that entity was mutated;

meaning a mutation was performed to change originally computed graph value.

---


##### `IMPORT` <a name="IMPORT" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.IMPORT"></a>

Indicates that resource is imported into CDK (eg: `lambda.Function.fromFunctionName()`, `s3.Bucket.fromBucketArn()`).

---


##### `CUSTOM_RESOURCE` <a name="CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CUSTOM_RESOURCE"></a>

Indicates if node is a CustomResource.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html)

---


##### `AWS_CUSTOM_RESOURCE` <a name="AWS_CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_CUSTOM_RESOURCE"></a>

Indicates if node is an AwsCustomResource, which is a custom resource that simply calls the AWS SDK API via singleton provider.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html)

---


##### `AWS_API_CALL_LAMBDA` <a name="AWS_API_CALL_LAMBDA" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_API_CALL_LAMBDA"></a>

Indicates if lambda function resource is a singleton AWS API call lambda for AwsCustomResources.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html)

---


### MetadataTypeEnum <a name="MetadataTypeEnum" id="@aws-prototyping-sdk/cdk-graph.MetadataTypeEnum"></a>

Common cdk metadata types.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.MetadataTypeEnum.LOGICAL_ID">LOGICAL_ID</a></code> | *No description.* |

---

##### `LOGICAL_ID` <a name="LOGICAL_ID" id="@aws-prototyping-sdk/cdk-graph.MetadataTypeEnum.LOGICAL_ID"></a>

---


### NodeTypeEnum <a name="NodeTypeEnum" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum"></a>

Node types handled by the graph.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.DEFAULT">DEFAULT</a></code> | Default node type - used for all nodes that don't have explicit type defined. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CFN_RESOURCE">CFN_RESOURCE</a></code> | L1 cfn resource node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.RESOURCE">RESOURCE</a></code> | L2 cdk resource node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CUSTOM_RESOURCE">CUSTOM_RESOURCE</a></code> | Cdk customer resource node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ROOT">ROOT</a></code> | Graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.APP">APP</a></code> | Cdk App node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STAGE">STAGE</a></code> | Cdk Stage node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STACK">STACK</a></code> | Cdk Stack node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.NESTED_STACK">NESTED_STACK</a></code> | Cdk NestedStack node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.OUTPUT">OUTPUT</a></code> | CfnOutput node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.PARAMETER">PARAMETER</a></code> | CfnParameter node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ASSET">ASSET</a></code> | Cdk asset node. |

---

##### `DEFAULT` <a name="DEFAULT" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.DEFAULT"></a>

Default node type - used for all nodes that don't have explicit type defined.

---


##### `CFN_RESOURCE` <a name="CFN_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CFN_RESOURCE"></a>

L1 cfn resource node.

---


##### `RESOURCE` <a name="RESOURCE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.RESOURCE"></a>

L2 cdk resource node.

---


##### `CUSTOM_RESOURCE` <a name="CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CUSTOM_RESOURCE"></a>

Cdk customer resource node.

---


##### `ROOT` <a name="ROOT" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ROOT"></a>

Graph root node.

---


##### `APP` <a name="APP" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.APP"></a>

Cdk App node.

---


##### `STAGE` <a name="STAGE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STAGE"></a>

Cdk Stage node.

---


##### `STACK` <a name="STACK" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STACK"></a>

Cdk Stack node.

---


##### `NESTED_STACK` <a name="NESTED_STACK" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.NESTED_STACK"></a>

Cdk NestedStack node.

---


##### `OUTPUT` <a name="OUTPUT" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.OUTPUT"></a>

CfnOutput node.

---


##### `PARAMETER` <a name="PARAMETER" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.PARAMETER"></a>

CfnParameter node.

---


##### `ASSET` <a name="ASSET" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ASSET"></a>

Cdk asset node.

---


### ReferenceTypeEnum <a name="ReferenceTypeEnum" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum"></a>

Reference edge types.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.REF">REF</a></code> | CloudFormation **Ref** reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.ATTRIBUTE">ATTRIBUTE</a></code> | CloudFormation **Fn::GetAtt** reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT">IMPORT</a></code> | CloudFormation **Fn::ImportValue** reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT_ARN">IMPORT_ARN</a></code> | CloudFormation **Fn::Join** reference of imported resourced (eg: `s3.Bucket.fromBucketArn()`). |

---

##### `REF` <a name="REF" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.REF"></a>

CloudFormation **Ref** reference.

---


##### `ATTRIBUTE` <a name="ATTRIBUTE" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.ATTRIBUTE"></a>

CloudFormation **Fn::GetAtt** reference.

---


##### `IMPORT` <a name="IMPORT" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT"></a>

CloudFormation **Fn::ImportValue** reference.

---


##### `IMPORT_ARN` <a name="IMPORT_ARN" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT_ARN"></a>

CloudFormation **Fn::Join** reference of imported resourced (eg: `s3.Bucket.fromBucketArn()`).

---

