# 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>

```java
import software.aws.awsprototypingsdk.cdkgraph.CdkGraph;

CdkGraph.Builder.create(Construct root)
//  .plugins(java.util.List<ICdkGraphPlugin>)
    .build();
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.root">root</a></code> | <code>software.constructs.Construct</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.plugins">plugins</a></code> | <code>java.util.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:* software.constructs.Construct

---

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

- *Type:* java.util.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">toString</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. |

---

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

```java
public java.lang.String toString()
```

Returns a string representation of this construct.

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

```java
public void report()
```

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">isConstruct</a></code> | Checks if `x` is a construct. |

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.CdkGraph;

CdkGraph.isConstruct(java.lang.Object x)
```

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:* java.lang.Object

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>software.constructs.Node</code> | The tree node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.config">config</a></code> | <code>java.util.Map<java.lang.String, java.lang.Object></code> | Config. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.plugins">plugins</a></code> | <code>java.util.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>software.constructs.Construct</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.graphContext">graphContext</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>

```java
public Node getNode();
```

- *Type:* software.constructs.Node

The tree node.

---

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

```java
public java.util.Map<java.lang.String, java.lang.Object> getConfig();
```

- *Type:* java.util.Map<java.lang.String, java.lang.Object>

Config.

---

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

```java
public java.util.List<ICdkGraphPlugin> getPlugins();
```

- *Type:* java.util.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>

```java
public Construct getRoot();
```

- *Type:* software.constructs.Construct

---

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

```java
public CdkGraphContext getGraphContext();
```

- *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>java.lang.String</code> | Fixed CdkGraph construct id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.VERSION">VERSION</a></code> | <code>java.lang.String</code> | Current CdkGraph semantic version. |

---

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

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Fixed CdkGraph construct id.

---

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

```java
public java.lang.String getVersion();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.CdkGraphArtifact;

CdkGraphArtifact.builder()
    .filename(java.lang.String)
    .filepath(java.lang.String)
    .id(java.lang.String)
    .source(java.lang.String)
//  .description(java.lang.String)
    .build();
```

#### 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>java.lang.String</code> | Filename of the artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filepath">filepath</a></code> | <code>java.lang.String</code> | Full path where artifact is stored. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.id">id</a></code> | <code>java.lang.String</code> | The unique type of the artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.source">source</a></code> | <code>java.lang.String</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>java.lang.String</code> | Description of artifact. |

---

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

```java
public java.lang.String getFilename();
```

- *Type:* java.lang.String

Filename of the artifact.

---

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

```java
public java.lang.String getFilepath();
```

- *Type:* java.lang.String

Full path where artifact is stored.

---

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

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

The unique type of the artifact.

---

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

```java
public java.lang.String getSource();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getDescription();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.ConstructInfo;

ConstructInfo.builder()
    .fqn(java.lang.String)
    .version(java.lang.String)
    .build();
```

#### 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>java.lang.String</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.version">version</a></code> | <code>java.lang.String</code> | *No description.* |

---

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

```java
public java.lang.String getFqn();
```

- *Type:* java.lang.String

---

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

```java
public java.lang.String getVersion();
```

- *Type:* java.lang.String

---

### 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>

```java
import software.aws.awsprototypingsdk.cdkgraph.ICdkGraphProps;

ICdkGraphProps.builder()
//  .plugins(java.util.List<ICdkGraphPlugin>)
    .build();
```

#### 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>java.util.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>

```java
public java.util.List<ICdkGraphPlugin> getPlugins();
```

- *Type:* java.util.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>

```java
import software.aws.awsprototypingsdk.cdkgraph.IGraphFilterPlanFocusConfig;

IGraphFilterPlanFocusConfig.builder()
    .node(Node)
    .node(IFilterFocusCallback)
//  .noHoist(java.lang.Boolean)
    .build();
```

#### 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><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a> OR <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">noHoist</a></code> | <code>java.lang.Boolean</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>

```java
public java.lang.Object getNode();
```

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

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

---

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

```java
public java.lang.Boolean getNoHoist();
```

- *Type:* java.lang.Boolean
- *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>

```java
import software.aws.awsprototypingsdk.cdkgraph.InferredNodeProps;

InferredNodeProps.builder()
    .uuid(java.lang.String)
//  .attributes(java.util.Map<java.lang.String, java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject)
//  .attributes(java.util.List<java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject>>)
//  .flags(java.util.List<FlagEnum>)
//  .metadata(java.util.List<MetadataEntry>)
//  .tags(java.util.Map<java.lang.String, java.lang.String>)
    .dependencies(java.util.List<java.lang.String>)
    .unresolvedReferences(java.util.List<SGUnresolvedReference>)
//  .cfnType(java.lang.String)
//  .constructInfo(ConstructInfo)
//  .logicalId(java.lang.String)
    .build();
```

#### 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>java.lang.String</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.attributes">attributes</a></code> | <code>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.dependencies">dependencies</a></code> | <code>java.util.List<java.lang.String></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.unresolvedReferences">unresolvedReferences</a></code> | <code>java.util.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">cfnType</a></code> | <code>java.lang.String</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</code> | *No description.* |

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identity.

---

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

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Serializable entity tags.

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

---

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

```java
public java.util.List<java.lang.String> getDependencies();
```

- *Type:* java.util.List<java.lang.String>

---

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

```java
public java.util.List<SGUnresolvedReference> getUnresolvedReferences();
```

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

---

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

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

---

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

```java
public ConstructInfo getConstructInfo();
```

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

---

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

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

---

### 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>

```java
import software.aws.awsprototypingsdk.cdkgraph.PlainObject;

PlainObject.builder()
    .build();
```


### 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>

```java
import software.aws.awsprototypingsdk.cdkgraph.SGEdge;

SGEdge.builder()
    .uuid(java.lang.String)
//  .attributes(java.util.Map<java.lang.String, java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject)
//  .attributes(java.util.List<java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject>>)
//  .flags(java.util.List<FlagEnum>)
//  .metadata(java.util.List<MetadataEntry>)
//  .tags(java.util.Map<java.lang.String, java.lang.String>)
    .direction(EdgeDirectionEnum)
    .edgeType(EdgeTypeEnum)
    .source(java.lang.String)
    .target(java.lang.String)
    .build();
```

#### 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>java.lang.String</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.attributes">attributes</a></code> | <code>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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">edgeType</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>java.lang.String</code> | UUID of edge **source**  node (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.target">target</a></code> | <code>java.lang.String</code> | UUID of edge **target**  node (head). |

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identity.

---

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

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Serializable entity tags.

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

---

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

```java
public EdgeDirectionEnum getDirection();
```

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

Indicates the direction in which the edge is directed.

---

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

```java
public EdgeTypeEnum getEdgeType();
```

- *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>

```java
public java.lang.String getSource();
```

- *Type:* java.lang.String

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

---

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

```java
public java.lang.String getTarget();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.SGEntity;

SGEntity.builder()
    .uuid(java.lang.String)
//  .attributes(java.util.Map<java.lang.String, java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject)
//  .attributes(java.util.List<java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject>>)
//  .flags(java.util.List<FlagEnum>)
//  .metadata(java.util.List<MetadataEntry>)
//  .tags(java.util.Map<java.lang.String, java.lang.String>)
    .build();
```

#### 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>java.lang.String</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.attributes">attributes</a></code> | <code>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></code> | Serializable entity tags. |

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identity.

---

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

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.SGGraphStore;

SGGraphStore.builder()
    .edges(java.util.List<SGEdge>)
    .tree(SGNode)
    .version(java.lang.String)
    .build();
```

#### 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>java.util.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>java.lang.String</code> | Store version. |

---

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

```java
public java.util.List<SGEdge> getEdges();
```

- *Type:* java.util.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>

```java
public SGNode getTree();
```

- *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>

```java
public java.lang.String getVersion();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.SGNode;

SGNode.builder()
    .uuid(java.lang.String)
//  .attributes(java.util.Map<java.lang.String, java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject)
//  .attributes(java.util.List<java.lang.String)
//  .attributes(java.lang.Number)
//  .attributes(java.lang.Boolean)
//  .attributes(PlainObject>>)
//  .flags(java.util.List<FlagEnum>)
//  .metadata(java.util.List<MetadataEntry>)
//  .tags(java.util.Map<java.lang.String, java.lang.String>)
    .id(java.lang.String)
    .nodeType(NodeTypeEnum)
    .path(java.lang.String)
//  .cfnType(java.lang.String)
//  .children(java.util.Map<java.lang.String, SGNode>)
//  .constructInfo(ConstructInfo)
//  .edges(java.util.List<java.lang.String>)
//  .logicalId(java.lang.String)
//  .parent(java.lang.String)
//  .stack(java.lang.String)
    .build();
```

#### 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>java.lang.String</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.attributes">attributes</a></code> | <code>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.id">id</a></code> | <code>java.lang.String</code> | Node id within parent (unique only between parent child nodes). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.nodeType">nodeType</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>java.lang.String</code> | Node path. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.children">children</a></code> | <code>java.util.Map<java.lang.String, <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">constructInfo</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>java.util.List<java.lang.String></code> | List of edge UUIDs where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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>java.lang.String</code> | UUID of node parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.stack">stack</a></code> | <code>java.lang.String</code> | UUID of node stack. |

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identity.

---

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

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Serializable entity tags.

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

---

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

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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

---

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

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Node path.

---

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

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

CloudFormation resource type for this node.

---

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

```java
public java.util.Map<java.lang.String, SGNode> getChildren();
```

- *Type:* java.util.Map<java.lang.String, <a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>>

Child node record.

---

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

```java
public ConstructInfo getConstructInfo();
```

- *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>

```java
public java.util.List<java.lang.String> getEdges();
```

- *Type:* java.util.List<java.lang.String>

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

---

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

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getParent();
```

- *Type:* java.lang.String

UUID of node parent.

---

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

```java
public java.lang.String getStack();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.SGUnresolvedReference;

SGUnresolvedReference.builder()
    .referenceType(ReferenceTypeEnum)
    .source(java.lang.String)
    .target(java.lang.String)
//  .value(java.lang.String)
//  .value(java.lang.Number)
//  .value(java.lang.Boolean)
//  .value(PlainObject)
//  .value(java.util.List<java.lang.String)
//  .value(java.lang.Number)
//  .value(java.lang.Boolean)
//  .value(PlainObject>)
    .build();
```

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

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.referenceType">referenceType</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>java.lang.String</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.target">target</a></code> | <code>java.lang.String</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.value">value</a></code> | <code>java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>></code> | *No description.* |

---

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

```java
public ReferenceTypeEnum getReferenceType();
```

- *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>

```java
public java.lang.String getSource();
```

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTarget();
```

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getValue();
```

- *Type:* java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
import software.aws.awsprototypingsdk.cdkgraph.AppNode;

new AppNode(IAppNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.toString">toString</a></code> | Get string representation of this node. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

Indicates that this node must not have references.

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void addChild(Node node)
```

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>

---

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

```java
public void addLink(Edge edge)
```

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>

---

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

```java
public void addReverseLink(Edge edge)
```

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>

---

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

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

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

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

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

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

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

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

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

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

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

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

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

- *Type:* java.lang.String

---

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

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

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

```java
public Node getNearestAncestor(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>

---

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

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

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

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

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

```java
public void mutateCollapse()
```

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

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

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

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

```java
public Node mutateCollapseToParent()
```

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

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

```java
public void mutateHoist(Node newParent)
```

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

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

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

---

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

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

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

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

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

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

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

```java
public java.lang.String toString()
```

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">isAppNode</a></code> | Indicates if node is a {@link AppNode}. |

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.AppNode;

AppNode.isAppNode(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

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

Get all direct child nodes.

---

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

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

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

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

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

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

---

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

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

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

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

---

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

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

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

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

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

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

---

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

```java
public java.util.List<Edge> getReverseLinks();
```

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

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

---

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

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

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

Get list of *siblings* of this node.

---

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

```java
public PlainObject getCfnProps();
```

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

Gets CloudFormation properties for this node.

---

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

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

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

```java
public ConstructInfo getConstructInfo();
```

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

Synthesized construct information defining jii resolution data.

---

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

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

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

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

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

Parent node.

Only the root node should not have parent.

---

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

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *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>java.lang.String</code> | Fixed path of the App. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.UUID">UUID</a></code> | <code>java.lang.String</code> | Fixed UUID for App node. |

---

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

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Fixed path of the App.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.AttributeReference;

new AttributeReference(IAttributeReferenceProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateConsume">mutateConsume</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">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.toString">toString</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveChain">resolveChain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveTargets">resolveTargets</a></code> | Resolve targets by following potential edge chain. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean _strict)
```

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:* java.lang.Boolean

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean isEquivalent(Edge edge)
```

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>

---

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

```java
public void mutateConsume(Edge edge)
```

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.

---

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

```java
public void mutateDirection(EdgeDirectionEnum direction)
```

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>

---

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

```java
public void mutateSource(Node node)
```

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>

---

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

```java
public void mutateTarget(Node node)
```

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>

---

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

```java
public java.lang.String toString()
```

Get string representation of this edge.

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

```java
public java.util.List<java.lang.Object> resolveChain()
```

Resolve reference chain.

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

```java
public java.util.List<Node> resolveTargets()
```

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

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.AttributeReference;

AttributeReference.findAllInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.AttributeReference;

AttributeReference.findInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.AttributeReference;

AttributeReference.isRef(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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.AttributeReference;

AttributeReference.isReference(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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.AttributeReference;

AttributeReference.isAtt(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</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">edgeType</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">isClosed</a></code> | <code>java.lang.Boolean</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">isCrossStack</a></code> | <code>java.lang.Boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">referenceType</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>java.lang.String</code> | Get the resolved attribute value. |

---

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

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

Indicates if edge allows destructive mutations.

---

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

```java
public EdgeDirectionEnum getDirection();
```

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

Indicates the direction in which the edge is directed.

---

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

```java
public EdgeTypeEnum getEdgeType();
```

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

Type of edge.

---

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

```java
public java.lang.Boolean getIsClosed();
```

- *Type:* java.lang.Boolean

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.

---

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

```java
public java.lang.Boolean getIsCrossStack();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

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

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

---

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

```java
public ReferenceTypeEnum getReferenceType();
```

- *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>

```java
public java.lang.String getValue();
```

- *Type:* java.lang.String

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>java.lang.String</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.PREFIX">PREFIX</a></code> | <code>java.lang.String</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>java.lang.String</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>

```java
public java.lang.String getAttType();
```

- *Type:* java.lang.String

Attribute defining the type of reference.

---

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

```java
public java.lang.String getPrefix();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getAttValue();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.BaseEntity;

new BaseEntity(IBaseEntityProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.mutateDestroy">mutateDestroy</a></code> | Destroy the entity be removing all references and removing from store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag">setTag</a></code> | Set tag. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

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

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---


#### 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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |

---

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

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.CdkGraphContext;

new CdkGraphContext(Store store, java.lang.String outdir);
```

| **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>java.lang.String</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:* java.lang.String

---

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

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.getArtifact">getArtifact</a></code> | Get CdkGraph artifact by id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.hasArtifactFile">hasArtifactFile</a></code> | Indicates if context has an artifact with *filename* defined. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact">logArtifact</a></code> | Logs an artifact entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact">writeArtifact</a></code> | Writes artifact data to outdir and logs the entry. |

---

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

```java
public CdkGraphArtifact getArtifact(java.lang.String id)
```

Get CdkGraph artifact by id.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasArtifactFile(java.lang.String filename)
```

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:* java.lang.String

---

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

```java
public CdkGraphArtifact logArtifact(CdkGraph OR ICdkGraphPlugin source, java.lang.String id, java.lang.String filepath)
public CdkGraphArtifact logArtifact(CdkGraph OR ICdkGraphPlugin source, java.lang.String id, java.lang.String filepath, java.lang.String description)
```

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:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph">CdkGraph</a> OR <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:* java.lang.String

Unique id of the artifact.

---

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

- *Type:* java.lang.String

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:* java.lang.String

Description of the artifact.

---

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

```java
public CdkGraphArtifact writeArtifact(CdkGraph OR ICdkGraphPlugin source, java.lang.String id, java.lang.String filename, java.lang.String data)
public CdkGraphArtifact writeArtifact(CdkGraph OR ICdkGraphPlugin source, java.lang.String id, java.lang.String filename, java.lang.String data, java.lang.String description)
```

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:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph">CdkGraph</a> OR <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:* java.lang.String

Unique id of the artifact.

---

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

- *Type:* java.lang.String

Relative name of the file.

---

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

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>java.util.Map<java.lang.String, <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">graphJson</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>java.lang.String</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>

```java
public java.util.Map<java.lang.String, CdkGraphArtifact> getArtifacts();
```

- *Type:* java.util.Map<java.lang.String, <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a>>

Get record of all graph artifacts keyed by artifact id.

---

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

```java
public CdkGraphArtifact getGraphJson();
```

- *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>

```java
public java.lang.String getOutdir();
```

- *Type:* java.lang.String

---

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

```java
public Store getStore();
```

- *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>

```java
import software.aws.awsprototypingsdk.cdkgraph.CfnResourceNode;

new CfnResourceNode(ICfnResourceNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isEquivalentFqn">isEquivalentFqn</a></code> | Evaluates if CfnResourceNode fqn is equivalent to ResourceNode fqn. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void addChild(Node node)
```

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>

---

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

```java
public void addLink(Edge edge)
```

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>

---

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

```java
public void addReverseLink(Edge edge)
```

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>

---

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

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

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

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

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

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

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

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

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

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

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

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

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

- *Type:* java.lang.String

---

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

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

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

```java
public Node getNearestAncestor(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>

---

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

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

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

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

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

```java
public void mutateCollapse()
```

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

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

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

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

```java
public Node mutateCollapseToParent()
```

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

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

```java
public void mutateHoist(Node newParent)
```

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

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

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

---

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

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

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

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

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

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

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

```java
public java.lang.String toString()
```

Get string representation of this node.

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

```java
public java.lang.Boolean isEquivalentFqn(ResourceNode resource)
```

Evaluates if CfnResourceNode fqn is equivalent to ResourceNode fqn.

*Example*

```java
// 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">isCfnResourceNode</a></code> | Indicates if a node is a {@link CfnResourceNode}. |

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.CfnResourceNode;

CfnResourceNode.isCfnResourceNode(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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">isImport</a></code> | <code>java.lang.Boolean</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

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

Get all direct child nodes.

---

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

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

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

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

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

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

---

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

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

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

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

---

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

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

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

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

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

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

---

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

```java
public java.util.List<Edge> getReverseLinks();
```

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

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

---

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

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

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

Get list of *siblings* of this node.

---

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

```java
public PlainObject getCfnProps();
```

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

Gets CloudFormation properties for this node.

---

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

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

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

```java
public ConstructInfo getConstructInfo();
```

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

Synthesized construct information defining jii resolution data.

---

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

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

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

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

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

Parent node.

Only the root node should not have parent.

---

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

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

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

Stack the node is contained in.

---

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

```java
public java.lang.Boolean getIsImport();
```

- *Type:* java.lang.Boolean

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>

```java
public ResourceNode getResource();
```

- *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>java.lang.String</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>

```java
public java.lang.String getAttImportArnToken();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.Dependency;

new Dependency(ITypedEdgeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateConsume">mutateConsume</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">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.toString">toString</a></code> | Get string representation of this edge. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean _strict)
```

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:* java.lang.Boolean

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean isEquivalent(Edge edge)
```

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>

---

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

```java
public void mutateConsume(Edge edge)
```

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.

---

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

```java
public void mutateDirection(EdgeDirectionEnum direction)
```

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>

---

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

```java
public void mutateSource(Node node)
```

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>

---

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

```java
public void mutateTarget(Node node)
```

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>

---

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

```java
public java.lang.String toString()
```

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">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.isDependency">isDependency</a></code> | Indicates if given edge is a {@link Dependency} edge. |

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.Dependency;

Dependency.findAllInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.Dependency;

Dependency.findInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.Dependency;

Dependency.isDependency(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</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">edgeType</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">isClosed</a></code> | <code>java.lang.Boolean</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">isCrossStack</a></code> | <code>java.lang.Boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

Indicates if edge allows destructive mutations.

---

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

```java
public EdgeDirectionEnum getDirection();
```

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

Indicates the direction in which the edge is directed.

---

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

```java
public EdgeTypeEnum getEdgeType();
```

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

Type of edge.

---

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

```java
public java.lang.Boolean getIsClosed();
```

- *Type:* java.lang.Boolean

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.

---

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

```java
public java.lang.Boolean getIsCrossStack();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

- *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>java.lang.String</code> | Edge prefix to denote dependency edge. |

---

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

```java
public java.lang.String getPrefix();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.Edge;

new Edge(IEdgeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateConsume">mutateConsume</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">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.toString">toString</a></code> | Get string representation of this edge. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean _strict)
```

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:* java.lang.Boolean

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean isEquivalent(Edge edge)
```

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>

---

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

```java
public void mutateConsume(Edge edge)
```

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.

---

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

```java
public void mutateDirection(EdgeDirectionEnum direction)
```

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>

---

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

```java
public void mutateSource(Node node)
```

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>

---

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

```java
public void mutateTarget(Node node)
```

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>

---

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

```java
public java.lang.String toString()
```

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">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.Edge;

Edge.findAllInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.Edge;

Edge.findInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</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">edgeType</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">isClosed</a></code> | <code>java.lang.Boolean</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">isCrossStack</a></code> | <code>java.lang.Boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

Indicates if edge allows destructive mutations.

---

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

```java
public EdgeDirectionEnum getDirection();
```

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

Indicates the direction in which the edge is directed.

---

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

```java
public EdgeTypeEnum getEdgeType();
```

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

Type of edge.

---

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

```java
public java.lang.Boolean getIsClosed();
```

- *Type:* java.lang.Boolean

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.

---

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

```java
public java.lang.Boolean getIsCrossStack();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

- *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>

```java
import software.aws.awsprototypingsdk.cdkgraph.ImportReference;

new ImportReference(ITypedEdgeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateConsume">mutateConsume</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">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.toString">toString</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.resolveChain">resolveChain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.resolveTargets">resolveTargets</a></code> | Resolve targets by following potential edge chain. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean _strict)
```

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:* java.lang.Boolean

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean isEquivalent(Edge edge)
```

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>

---

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

```java
public void mutateConsume(Edge edge)
```

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.

---

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

```java
public void mutateDirection(EdgeDirectionEnum direction)
```

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>

---

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

```java
public void mutateSource(Node node)
```

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>

---

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

```java
public void mutateTarget(Node node)
```

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>

---

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

```java
public java.lang.String toString()
```

Get string representation of this edge.

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

```java
public java.util.List<java.lang.Object> resolveChain()
```

Resolve reference chain.

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

```java
public java.util.List<Node> resolveTargets()
```

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">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isRef">isRef</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isReference">isReference</a></code> | Indicates if edge is a {@link Reference}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isImport">isImport</a></code> | Indicates if edge is **Fn::ImportValue** based {@link Reference}. |

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.ImportReference;

ImportReference.findAllInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.ImportReference;

ImportReference.findInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.ImportReference;

ImportReference.isRef(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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.ImportReference;

ImportReference.isReference(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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.ImportReference;

ImportReference.isImport(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</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">edgeType</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">isClosed</a></code> | <code>java.lang.Boolean</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">isCrossStack</a></code> | <code>java.lang.Boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">referenceType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

Indicates if edge allows destructive mutations.

---

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

```java
public EdgeDirectionEnum getDirection();
```

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

Indicates the direction in which the edge is directed.

---

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

```java
public EdgeTypeEnum getEdgeType();
```

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

Type of edge.

---

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

```java
public java.lang.Boolean getIsClosed();
```

- *Type:* java.lang.Boolean

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.

---

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

```java
public java.lang.Boolean getIsCrossStack();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

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

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

---

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

```java
public ReferenceTypeEnum getReferenceType();
```

- *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>java.lang.String</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.PREFIX">PREFIX</a></code> | <code>java.lang.String</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>

```java
public java.lang.String getAttType();
```

- *Type:* java.lang.String

Attribute defining the type of reference.

---

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

```java
public java.lang.String getPrefix();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.NestedStackNode;

new NestedStackNode(INestedStackNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addOutput">addOutput</a></code> | Associate {@link OutputNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addParameter">addParameter</a></code> | Associate {@link ParameterNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findOutput">findOutput</a></code> | Find {@link OutputNode} with *logicalId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findParameter">findParameter</a></code> | Find {@link ParameterNode} with *parameterId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveOutput">mutateRemoveOutput</a></code> | Disassociate {@link OutputNode} from this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveParameter">mutateRemoveParameter</a></code> | Disassociate {@link ParameterNode} from this stack. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void addChild(Node node)
```

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>

---

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

```java
public void addLink(Edge edge)
```

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>

---

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

```java
public void addReverseLink(Edge edge)
```

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>

---

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

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

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

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

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

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

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

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

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

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

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

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

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

- *Type:* java.lang.String

---

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

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

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

```java
public Node getNearestAncestor(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>

---

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

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

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

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

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

```java
public void mutateCollapse()
```

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

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

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

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

```java
public Node mutateCollapseToParent()
```

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

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

```java
public void mutateHoist(Node newParent)
```

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

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

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

---

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

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

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

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

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

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

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

```java
public java.lang.String toString()
```

Get string representation of this node.

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

```java
public void addOutput(OutputNode node)
```

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>

---

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

```java
public void addParameter(ParameterNode node)
```

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>

---

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

```java
public OutputNode findOutput(java.lang.String logicalId)
```

Find {@link OutputNode} with *logicalId* defined by this stack.

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

- *Type:* java.lang.String

---

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

```java
public ParameterNode findParameter(java.lang.String parameterId)
```

Find {@link ParameterNode} with *parameterId* defined by this stack.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean mutateRemoveOutput(OutputNode node)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveParameter(ParameterNode node)
```

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">isStackNode</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">isNestedStackNode</a></code> | Indicates if node is a {@link NestedStackNode}. |

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.NestedStackNode;

NestedStackNode.isStackNode(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>

```java
import software.aws.awsprototypingsdk.cdkgraph.NestedStackNode;

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>

---

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

```java
import software.aws.awsprototypingsdk.cdkgraph.NestedStackNode;

NestedStackNode.isNestedStackNode(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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>java.util.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>java.util.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>java.util.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">parentStack</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

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

Get all direct child nodes.

---

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

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

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

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

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

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

---

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

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

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

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

---

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

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

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

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

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

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

---

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

```java
public java.util.List<Edge> getReverseLinks();
```

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

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

---

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

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

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

Get list of *siblings* of this node.

---

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

```java
public PlainObject getCfnProps();
```

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

Gets CloudFormation properties for this node.

---

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

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

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

```java
public ConstructInfo getConstructInfo();
```

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

Synthesized construct information defining jii resolution data.

---

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

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

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

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

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

Parent node.

Only the root node should not have parent.

---

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

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *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>

```java
public java.util.List<OutputNode> getExports();
```

- *Type:* java.util.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>

```java
public java.util.List<OutputNode> getOutputs();
```

- *Type:* java.util.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>

```java
public java.util.List<ParameterNode> getParameters();
```

- *Type:* java.util.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>

```java
public StageNode getStage();
```

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

Get {@link StageNode} containing this stack.

---

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

```java
public StackNode getParentStack();
```

- *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>

```java
import software.aws.awsprototypingsdk.cdkgraph.Node;

new Node(INodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.toString">toString</a></code> | Get string representation of this node. |

---

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

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addFlag(FlagEnum flag)
```

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>

---

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

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

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

- *Type:* java.lang.Boolean

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

---

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

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

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

- *Type:* java.lang.String

---

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

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

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

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

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

- *Type:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

Indicates that this node must not have references.

---

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

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.Object

---

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

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

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

- *Type:* java.lang.String

---

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

```java
public void addChild(Node node)
```

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>

---

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

```java
public void addLink(Edge edge)
```

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>

---

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

```java
public void addReverseLink(Edge edge)
```

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>

---

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

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

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

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

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

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

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

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

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

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

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

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

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

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

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

- *Type:* java.lang.String

---

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

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

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

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

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

```java
public Node getNearestAncestor(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>

---

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

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

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

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

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

```java
public void mutateCollapse()
```

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

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

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

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

```java
public Node mutateCollapseToParent()
```

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

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

```java
public void mutateHoist(Node newParent)
```

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

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

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

---

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

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

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

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

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

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

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

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

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

```java
public java.lang.String toString()
```

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

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

Get *readonly* list of all flags.

---

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

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

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

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

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

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

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

Get all direct child nodes.

---

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

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

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

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

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

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

---

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

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

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

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

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

---

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

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

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

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

---

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

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

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

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

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

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

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

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

---

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

```java
public java.util.List<Edge> getReverseLinks();
```

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

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

---

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

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

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

Get list of *siblings* of this node.

---

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

```java
public PlainObject getCfnProps();
```

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

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.Node.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.Node.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.Node.property.constructInfoFqn"></a>

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Node.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.Node.property.rootStack"></a>

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *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>

```java
import software.aws.awsprototypingsdk.cdkgraph.OutputNode;

new OutputNode(IOutputNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute"></a>

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag"></a>

```java
public void addFlag(FlagEnum flag)
```

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>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata"></a>

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag"></a>

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData"></a>

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData.parameter.applyFlags"></a>

- *Type:* java.lang.Boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata"></a>

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute"></a>

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getTag"></a>

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getTag.parameter.key"></a>

- *Type:* java.lang.String

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute"></a>

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasFlag"></a>

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata"></a>

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag"></a>

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy"></a>

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute"></a>

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag"></a>

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addChild"></a>

```java
public void addChild(Node node)
```

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>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addLink"></a>

```java
public void addLink(Edge edge)
```

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>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink"></a>

```java
public void addReverseLink(Edge edge)
```

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>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn"></a>

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference"></a>

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAll"></a>

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAllLinks"></a>

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor"></a>

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findChild"></a>

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink"></a>

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks"></a>

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp"></a>

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getChild"></a>

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains"></a>

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor"></a>

```java
public Node getNearestAncestor(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>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor"></a>

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isChild"></a>

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapse"></a>

```java
public void mutateCollapse()
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo"></a>

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseToParent"></a>

```java
public Node mutateCollapseToParent()
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist"></a>

```java
public void mutateHoist(Node newParent)
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateMove"></a>

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild"></a>

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink"></a>

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink"></a>

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateUncluster"></a>

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.OutputNode.toString"></a>

```java
public java.lang.String toString()
```

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">isOutputNode</a></code> | Indicates if node is an {@link OutputNode}. |

---

##### `isOutputNode` <a name="isOutputNode" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isOutputNode"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.OutputNode;

OutputNode.isOutputNode(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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">isExport</a></code> | <code>java.lang.Boolean</code> | Indicates if {@link OutputNode} is **exported**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.value">value</a></code> | <code>java.lang.Object</code> | Get the *value** attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.exportName">exportName</a></code> | <code>java.lang.String</code> | Get the export name attribute. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.attributes"></a>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>>

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isDestroyed"></a>

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isMutated"></a>

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.uuid"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependedOnBy"></a>

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencyLinks"></a>

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isAsset"></a>

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCfnFqn"></a>

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCluster"></a>

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCustomResource"></a>

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExtraneous"></a>

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isGraphContainer"></a>

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isLeaf"></a>

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isTopLevel"></a>

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.referencedBy"></a>

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.referenceLinks"></a>

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseDependencyLinks"></a>

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>>

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseLinks"></a>

```java
public java.util.List<Edge> getReverseLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseReferenceLinks"></a>

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnProps"></a>

```java
public PlainObject getCfnProps();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfoFqn"></a>

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.rootStack"></a>

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `isExport`<sup>Required</sup> <a name="isExport" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExport"></a>

```java
public java.lang.Boolean getIsExport();
```

- *Type:* java.lang.Boolean

Indicates if {@link OutputNode} is **exported**.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.value"></a>

```java
public java.lang.Object getValue();
```

- *Type:* java.lang.Object

Get the *value** attribute.

---

##### `exportName`<sup>Optional</sup> <a name="exportName" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.exportName"></a>

```java
public java.lang.String getExportName();
```

- *Type:* java.lang.String

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>java.lang.String</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>java.lang.String</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>

```java
public java.lang.String getAttrExportName();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getAttrValue();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.ParameterNode;

new ParameterNode(IParameterNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute"></a>

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag"></a>

```java
public void addFlag(FlagEnum flag)
```

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>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata"></a>

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag"></a>

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData"></a>

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData.parameter.applyFlags"></a>

- *Type:* java.lang.Boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata"></a>

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute"></a>

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag"></a>

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag.parameter.key"></a>

- *Type:* java.lang.String

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute"></a>

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasFlag"></a>

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata"></a>

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag"></a>

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy"></a>

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute"></a>

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag"></a>

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild"></a>

```java
public void addChild(Node node)
```

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>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink"></a>

```java
public void addLink(Edge edge)
```

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>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink"></a>

```java
public void addReverseLink(Edge edge)
```

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>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn"></a>

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference"></a>

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAll"></a>

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAllLinks"></a>

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor"></a>

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild"></a>

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink"></a>

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks"></a>

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp"></a>

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild"></a>

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains"></a>

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor"></a>

```java
public Node getNearestAncestor(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>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor"></a>

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild"></a>

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapse"></a>

```java
public void mutateCollapse()
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo"></a>

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseToParent"></a>

```java
public Node mutateCollapseToParent()
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist"></a>

```java
public void mutateHoist(Node newParent)
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateMove"></a>

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild"></a>

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink"></a>

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink"></a>

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateUncluster"></a>

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.toString"></a>

```java
public java.lang.String toString()
```

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">isParameterNode</a></code> | Indicates if node is a {@link ParameterNode}. |

---

##### `isParameterNode` <a name="isParameterNode" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isParameterNode"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.ParameterNode;

ParameterNode.isParameterNode(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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">isStackReference</a></code> | <code>java.lang.Boolean</code> | Indicates if parameter is a reference to a stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parameterType">parameterType</a></code> | <code>java.lang.Object</code> | Get the parameter type attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.value">value</a></code> | <code>java.lang.Object</code> | Get the value attribute. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.attributes"></a>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>>

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isDestroyed"></a>

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isMutated"></a>

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.uuid"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependedOnBy"></a>

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencyLinks"></a>

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isAsset"></a>

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCfnFqn"></a>

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCluster"></a>

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCustomResource"></a>

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isExtraneous"></a>

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isGraphContainer"></a>

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isLeaf"></a>

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isTopLevel"></a>

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referencedBy"></a>

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referenceLinks"></a>

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseDependencyLinks"></a>

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>>

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseLinks"></a>

```java
public java.util.List<Edge> getReverseLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseReferenceLinks"></a>

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnProps"></a>

```java
public PlainObject getCfnProps();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfoFqn"></a>

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.rootStack"></a>

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `isStackReference`<sup>Required</sup> <a name="isStackReference" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isStackReference"></a>

```java
public java.lang.Boolean getIsStackReference();
```

- *Type:* java.lang.Boolean

Indicates if parameter is a reference to a stack.

---

##### `parameterType`<sup>Required</sup> <a name="parameterType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parameterType"></a>

```java
public java.lang.Object getParameterType();
```

- *Type:* java.lang.Object

Get the parameter type attribute.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.value"></a>

```java
public java.lang.Object getValue();
```

- *Type:* java.lang.Object

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>java.lang.String</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>java.lang.String</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>

```java
public java.lang.String getAttrType();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getAttrValue();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.Reference;

new Reference(IReferenceProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume">mutateConsume</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">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.toString">toString</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.resolveChain">resolveChain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.resolveTargets">resolveTargets</a></code> | Resolve targets by following potential edge chain. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute"></a>

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.Reference.addFlag"></a>

```java
public void addFlag(FlagEnum flag)
```

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>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata"></a>

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag"></a>

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData"></a>

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData.parameter.applyFlags"></a>

- *Type:* java.lang.Boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.Reference.findMetadata"></a>

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Reference.findMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.getAttribute"></a>

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.getAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.Reference.getTag"></a>

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.getTag.parameter.key"></a>

- *Type:* java.lang.String

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute"></a>

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasFlag"></a>

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata"></a>

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag"></a>

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy"></a>

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean _strict)
```

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:* java.lang.Boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute"></a>

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag"></a>

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `isEquivalent` <a name="isEquivalent" id="@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent"></a>

```java
public java.lang.Boolean isEquivalent(Edge edge)
```

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>

---

##### `mutateConsume` <a name="mutateConsume" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume"></a>

```java
public void mutateConsume(Edge edge)
```

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.

---

##### `mutateDirection` <a name="mutateDirection" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDirection"></a>

```java
public void mutateDirection(EdgeDirectionEnum direction)
```

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>

---

##### `mutateSource` <a name="mutateSource" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateSource"></a>

```java
public void mutateSource(Node node)
```

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>

---

##### `mutateTarget` <a name="mutateTarget" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget"></a>

```java
public void mutateTarget(Node node)
```

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>

---

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.Reference.toString"></a>

```java
public java.lang.String toString()
```

Get string representation of this edge.

##### `resolveChain` <a name="resolveChain" id="@aws-prototyping-sdk/cdk-graph.Reference.resolveChain"></a>

```java
public java.util.List<java.lang.Object> resolveChain()
```

Resolve reference chain.

##### `resolveTargets` <a name="resolveTargets" id="@aws-prototyping-sdk/cdk-graph.Reference.resolveTargets"></a>

```java
public java.util.List<Node> resolveTargets()
```

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">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isRef">isRef</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isReference">isReference</a></code> | Indicates if edge is a {@link Reference}. |

---

##### `findAllInChain` <a name="findAllInChain" id="@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.Reference;

Reference.findAllInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

##### `findInChain` <a name="findInChain" id="@aws-prototyping-sdk/cdk-graph.Reference.findInChain"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.Reference;

Reference.findInChain(java.util.List<java.lang.Object> chain, IEdgePredicate predicate)
```

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:* java.util.List<java.lang.Object>

---

###### `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>

---

##### `isRef` <a name="isRef" id="@aws-prototyping-sdk/cdk-graph.Reference.isRef"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.Reference;

Reference.isRef(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>

---

##### `isReference` <a name="isReference" id="@aws-prototyping-sdk/cdk-graph.Reference.isReference"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.Reference;

Reference.isReference(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</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">edgeType</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">isClosed</a></code> | <code>java.lang.Boolean</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">isCrossStack</a></code> | <code>java.lang.Boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">referenceType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>>

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isDestroyed"></a>

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isMutated"></a>

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Reference.property.uuid"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Reference.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Reference.property.direction"></a>

```java
public EdgeDirectionEnum getDirection();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.Reference.property.edgeType"></a>

```java
public EdgeTypeEnum getEdgeType();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `isClosed`<sup>Required</sup> <a name="isClosed" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isClosed"></a>

```java
public java.lang.Boolean getIsClosed();
```

- *Type:* java.lang.Boolean

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.

---

##### `isCrossStack`<sup>Required</sup> <a name="isCrossStack" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isCrossStack"></a>

```java
public java.lang.Boolean getIsCrossStack();
```

- *Type:* java.lang.Boolean

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isExtraneous"></a>

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

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>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `referenceType`<sup>Required</sup> <a name="referenceType" id="@aws-prototyping-sdk/cdk-graph.Reference.property.referenceType"></a>

```java
public ReferenceTypeEnum getReferenceType();
```

- *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>java.lang.String</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.PREFIX">PREFIX</a></code> | <code>java.lang.String</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>

```java
public java.lang.String getAttType();
```

- *Type:* java.lang.String

Attribute defining the type of reference.

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.Reference.property.PREFIX"></a>

```java
public java.lang.String getPrefix();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.ResourceNode;

new ResourceNode(IResourceNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource">mutateCfnResource</a></code> | Modifies the L1 resource wrapped by this L2 resource. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute"></a>

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag"></a>

```java
public void addFlag(FlagEnum flag)
```

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>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata"></a>

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag"></a>

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData"></a>

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData.parameter.applyFlags"></a>

- *Type:* java.lang.Boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata"></a>

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute"></a>

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag"></a>

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag.parameter.key"></a>

- *Type:* java.lang.String

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute"></a>

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasFlag"></a>

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata"></a>

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag"></a>

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy"></a>

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

Indicates that this node must not have references.

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute"></a>

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag"></a>

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild"></a>

```java
public void addChild(Node node)
```

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>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink"></a>

```java
public void addLink(Edge edge)
```

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>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink"></a>

```java
public void addReverseLink(Edge edge)
```

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>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn"></a>

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference"></a>

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAll"></a>

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAllLinks"></a>

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor"></a>

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild"></a>

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink"></a>

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks"></a>

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp"></a>

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild"></a>

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains"></a>

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor"></a>

```java
public Node getNearestAncestor(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>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor"></a>

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild"></a>

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapse"></a>

```java
public void mutateCollapse()
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo"></a>

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseToParent"></a>

```java
public Node mutateCollapseToParent()
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist"></a>

```java
public void mutateHoist(Node newParent)
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateMove"></a>

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild"></a>

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink"></a>

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink"></a>

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateUncluster"></a>

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.toString"></a>

```java
public java.lang.String toString()
```

Get string representation of this node.

##### `mutateCfnResource` <a name="mutateCfnResource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource"></a>

```java
public void mutateCfnResource()
public void mutateCfnResource(CfnResourceNode cfnResource)
```

Modifies the L1 resource wrapped by this L2 resource.

###### `cfnResource`<sup>Optional</sup> <a name="cfnResource" 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">isResourceNode</a></code> | Indicates if node is a {@link ResourceNode}. |

---

##### `isResourceNode` <a name="isResourceNode" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isResourceNode"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.ResourceNode;

ResourceNode.isResourceNode(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</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">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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">isCdkOwned</a></code> | <code>java.lang.Boolean</code> | Indicates if this resource is owned by cdk (defined in cdk library). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isWrapper">isWrapper</a></code> | <code>java.lang.Boolean</code> | Indicates if Resource wraps a single CfnResource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnResource">cfnResource</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>>

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isDestroyed"></a>

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isMutated"></a>

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.uuid"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependedOnBy"></a>

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencyLinks"></a>

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isAsset"></a>

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCfnFqn"></a>

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCluster"></a>

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCustomResource"></a>

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isExtraneous"></a>

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isGraphContainer"></a>

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isLeaf"></a>

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isTopLevel"></a>

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referencedBy"></a>

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referenceLinks"></a>

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseDependencyLinks"></a>

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>>

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseLinks"></a>

```java
public java.util.List<Edge> getReverseLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseReferenceLinks"></a>

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnProps"></a>

```java
public PlainObject getCfnProps();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Get the cfn properties from the L1 resource that this L2 resource wraps.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this L2 resource or for the L1 resource is wraps.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfoFqn"></a>

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.rootStack"></a>

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `isCdkOwned`<sup>Required</sup> <a name="isCdkOwned" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCdkOwned"></a>

```java
public java.lang.Boolean getIsCdkOwned();
```

- *Type:* java.lang.Boolean

Indicates if this resource is owned by cdk (defined in cdk library).

---

##### `isWrapper`<sup>Required</sup> <a name="isWrapper" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isWrapper"></a>

```java
public java.lang.Boolean getIsWrapper();
```

- *Type:* java.lang.Boolean

Indicates if Resource wraps a single CfnResource.

---

##### `cfnResource`<sup>Optional</sup> <a name="cfnResource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnResource"></a>

```java
public CfnResourceNode getCfnResource();
```

- *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>java.lang.String</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>java.lang.String</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>

```java
public java.lang.String getAttWrappedCfnProps();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getAttWrappedCfnType();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.RootNode;

new 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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo">mutateCollapseTo</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">mutateCollapseToParent</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">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute"></a>

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addFlag"></a>

```java
public void addFlag(FlagEnum flag)
```

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>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata"></a>

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag"></a>

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData"></a>

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData.parameter.applyFlags"></a>

- *Type:* java.lang.Boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata"></a>

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute"></a>

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.getTag"></a>

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getTag.parameter.key"></a>

- *Type:* java.lang.String

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute"></a>

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasFlag"></a>

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata"></a>

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag"></a>

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy"></a>

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean _strict)
```

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:* java.lang.Boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute"></a>

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag"></a>

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.addChild"></a>

```java
public void addChild(Node node)
```

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>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.addLink"></a>

```java
public void addLink(Edge edge)
```

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>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink"></a>

```java
public void addReverseLink(Edge edge)
```

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>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn"></a>

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesReference"></a>

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAll"></a>

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAllLinks"></a>

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor"></a>

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.findChild"></a>

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink"></a>

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks"></a>

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp"></a>

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.getChild"></a>

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains"></a>

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor"></a>

```java
public Node getNearestAncestor(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>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor"></a>

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.isChild"></a>

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapse"></a>

```java
public void mutateCollapse()
```

Collapses all sub-nodes of *this node* into *this node*.

> {@link RootNode} does not support this mutation

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo"></a>

```java
public Node mutateCollapseTo(Node _ancestor)
```

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>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseToParent"></a>

```java
public Node mutateCollapseToParent()
```

Collapses *this node* into *it's parent node* > {@link RootNode} does not support this mutation.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateHoist"></a>

```java
public void mutateHoist(Node _newParent)
```

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>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateMove"></a>

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild"></a>

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink"></a>

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink"></a>

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateUncluster"></a>

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.RootNode.toString"></a>

```java
public java.lang.String toString()
```

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">isRootNode</a></code> | Indicates if node is a {@link RootNode}. |

---

##### `isRootNode` <a name="isRootNode" id="@aws-prototyping-sdk/cdk-graph.RootNode.isRootNode"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.RootNode;

RootNode.isRootNode(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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>>

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isDestroyed"></a>

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isMutated"></a>

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.uuid"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependedOnBy"></a>

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencyLinks"></a>

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isAsset"></a>

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCfnFqn"></a>

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCluster"></a>

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCustomResource"></a>

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isExtraneous"></a>

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isGraphContainer"></a>

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isLeaf"></a>

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isTopLevel"></a>

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.referencedBy"></a>

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.referenceLinks"></a>

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseDependencyLinks"></a>

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>>

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseLinks"></a>

```java
public java.util.List<Edge> getReverseLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseReferenceLinks"></a>

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnProps"></a>

```java
public PlainObject getCfnProps();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfoFqn"></a>

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.rootStack"></a>

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *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>java.lang.String</code> | Fixed path of root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.UUID">UUID</a></code> | <code>java.lang.String</code> | Fixed UUID of root. |

---

##### `PATH`<sup>Required</sup> <a name="PATH" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.PATH"></a>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Fixed path of root.

---

##### `UUID`<sup>Required</sup> <a name="UUID" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.UUID"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

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>

```java
import software.aws.awsprototypingsdk.cdkgraph.StackNode;

new StackNode(IStackNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addOutput">addOutput</a></code> | Associate {@link OutputNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addParameter">addParameter</a></code> | Associate {@link ParameterNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findOutput">findOutput</a></code> | Find {@link OutputNode} with *logicalId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findParameter">findParameter</a></code> | Find {@link ParameterNode} with *parameterId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput">mutateRemoveOutput</a></code> | Disassociate {@link OutputNode} from this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter">mutateRemoveParameter</a></code> | Disassociate {@link ParameterNode} from this stack. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute"></a>

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addFlag"></a>

```java
public void addFlag(FlagEnum flag)
```

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>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata"></a>

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag"></a>

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData"></a>

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData.parameter.applyFlags"></a>

- *Type:* java.lang.Boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata"></a>

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute"></a>

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.getTag"></a>

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getTag.parameter.key"></a>

- *Type:* java.lang.String

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute"></a>

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasFlag"></a>

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata"></a>

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag"></a>

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy"></a>

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute"></a>

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag"></a>

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.addChild"></a>

```java
public void addChild(Node node)
```

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>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.addLink"></a>

```java
public void addLink(Edge edge)
```

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>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink"></a>

```java
public void addReverseLink(Edge edge)
```

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>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn"></a>

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesReference"></a>

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAll"></a>

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAllLinks"></a>

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor"></a>

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.findChild"></a>

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink"></a>

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks"></a>

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp"></a>

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.getChild"></a>

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains"></a>

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor"></a>

```java
public Node getNearestAncestor(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>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor"></a>

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.isChild"></a>

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapse"></a>

```java
public void mutateCollapse()
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo"></a>

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseToParent"></a>

```java
public Node mutateCollapseToParent()
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist"></a>

```java
public void mutateHoist(Node newParent)
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateMove"></a>

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild"></a>

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink"></a>

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink"></a>

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateUncluster"></a>

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.StackNode.toString"></a>

```java
public java.lang.String toString()
```

Get string representation of this node.

##### `addOutput` <a name="addOutput" id="@aws-prototyping-sdk/cdk-graph.StackNode.addOutput"></a>

```java
public void addOutput(OutputNode node)
```

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>

---

##### `addParameter` <a name="addParameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.addParameter"></a>

```java
public void addParameter(ParameterNode node)
```

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>

---

##### `findOutput` <a name="findOutput" id="@aws-prototyping-sdk/cdk-graph.StackNode.findOutput"></a>

```java
public OutputNode findOutput(java.lang.String logicalId)
```

Find {@link OutputNode} with *logicalId* defined by this stack.

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.StackNode.findOutput.parameter.logicalId"></a>

- *Type:* java.lang.String

---

##### `findParameter` <a name="findParameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.findParameter"></a>

```java
public ParameterNode findParameter(java.lang.String parameterId)
```

Find {@link ParameterNode} with *parameterId* defined by this stack.

###### `parameterId`<sup>Required</sup> <a name="parameterId" id="@aws-prototyping-sdk/cdk-graph.StackNode.findParameter.parameter.parameterId"></a>

- *Type:* java.lang.String

---

##### `mutateRemoveOutput` <a name="mutateRemoveOutput" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput"></a>

```java
public java.lang.Boolean mutateRemoveOutput(OutputNode node)
```

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>

---

##### `mutateRemoveParameter` <a name="mutateRemoveParameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter"></a>

```java
public java.lang.Boolean mutateRemoveParameter(ParameterNode node)
```

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">isStackNode</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. |

---

##### `isStackNode` <a name="isStackNode" id="@aws-prototyping-sdk/cdk-graph.StackNode.isStackNode"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.StackNode;

StackNode.isStackNode(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>

```java
import software.aws.awsprototypingsdk.cdkgraph.StackNode;

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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>java.util.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>java.util.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>java.util.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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>>

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isDestroyed"></a>

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isMutated"></a>

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.uuid"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependedOnBy"></a>

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencyLinks"></a>

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isAsset"></a>

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCfnFqn"></a>

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCluster"></a>

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCustomResource"></a>

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isExtraneous"></a>

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isGraphContainer"></a>

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isLeaf"></a>

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isTopLevel"></a>

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.referencedBy"></a>

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.referenceLinks"></a>

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseDependencyLinks"></a>

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>>

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseLinks"></a>

```java
public java.util.List<Edge> getReverseLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseReferenceLinks"></a>

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnProps"></a>

```java
public PlainObject getCfnProps();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfoFqn"></a>

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.rootStack"></a>

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *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>

```java
public java.util.List<OutputNode> getExports();
```

- *Type:* java.util.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>

```java
public java.util.List<OutputNode> getOutputs();
```

- *Type:* java.util.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>

```java
public java.util.List<ParameterNode> getParameters();
```

- *Type:* java.util.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>

```java
public StageNode getStage();
```

- *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>

```java
import software.aws.awsprototypingsdk.cdkgraph.StageNode;

new StageNode(ITypedNodeProps props);
```

| **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">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute">hasAttribute</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">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy">mutateDestroy</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">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.doesReference">doesReference</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">findAll</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">findAllLinks</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">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist">mutateHoist</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">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addStack">addStack</a></code> | Associate a {@link StackNode} with this stage. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack">mutateRemoveStack</a></code> | Disassociate {@link StackNode} from this stage. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute"></a>

```java
public void addAttribute(java.lang.String key, java.lang.Object value)
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addFlag"></a>

```java
public void addFlag(FlagEnum flag)
```

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>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata"></a>

```java
public void addMetadata(java.lang.String metadataType, java.lang.Object data)
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag"></a>

```java
public void addTag(java.lang.String key, java.lang.String value)
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag.parameter.key"></a>

- *Type:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData"></a>

```java
public void applyData(IBaseEntityDataProps data)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite)
public void applyData(IBaseEntityDataProps data, java.lang.Boolean overwrite, java.lang.Boolean applyFlags)
```

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:* java.lang.Boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData.parameter.applyFlags"></a>

- *Type:* java.lang.Boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata"></a>

```java
public java.util.List<MetadataEntry> findMetadata(java.lang.String metadataType)
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute"></a>

```java
public java.lang.Object getAttribute(java.lang.String key)
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.getTag"></a>

```java
public java.lang.String getTag(java.lang.String key)
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getTag.parameter.key"></a>

- *Type:* java.lang.String

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute"></a>

```java
public java.lang.Boolean hasAttribute(java.lang.String key)
public java.lang.Boolean hasAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasFlag"></a>

```java
public java.lang.Boolean hasFlag(FlagEnum flag)
```

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>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata"></a>

```java
public java.lang.Boolean hasMetadata(java.lang.String metadataType, java.lang.Object data)
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata.parameter.metadataType"></a>

- *Type:* java.lang.String

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata.parameter.data"></a>

- *Type:* java.lang.Object

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag"></a>

```java
public java.lang.Boolean hasTag(java.lang.String key)
public java.lang.Boolean hasTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy"></a>

```java
public void mutateDestroy()
public void mutateDestroy(java.lang.Boolean strict)
```

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:* java.lang.Boolean

Indicates that this node must not have references.

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute"></a>

```java
public void setAttribute(java.lang.String key, java.lang.Object value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute.parameter.value"></a>

- *Type:* java.lang.Object

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag"></a>

```java
public void setTag(java.lang.String key, java.lang.String value)
```

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:* java.lang.String

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag.parameter.value"></a>

- *Type:* java.lang.String

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.addChild"></a>

```java
public void addChild(Node node)
```

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>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.addLink"></a>

```java
public void addLink(Edge edge)
```

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>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink"></a>

```java
public void addReverseLink(Edge edge)
```

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>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn"></a>

```java
public java.lang.Boolean doesDependOn(Node node)
```

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>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesReference"></a>

```java
public java.lang.Boolean doesReference(Node node)
```

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>

```java
public Node find(INodePredicate predicate)
```

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>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAll"></a>

```java
public java.util.List<Node> findAll()
public java.util.List<Node> findAll(IFindNodeOptions options)
```

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>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAllLinks"></a>

```java
public java.util.List<Edge> findAllLinks()
public java.util.List<Edge> findAllLinks(IFindEdgeOptions options)
```

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>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor"></a>

```java
public Node findAncestor(INodePredicate predicate)
public Node findAncestor(INodePredicate predicate, java.lang.Number max)
```

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:* java.lang.Number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.findChild"></a>

```java
public Node findChild(java.lang.String id)
```

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:* java.lang.String

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink"></a>

```java
public Edge findLink(IEdgePredicate predicate)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public Edge findLink(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks"></a>

```java
public java.util.List<Edge> findLinks(IEdgePredicate predicate)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow)
public java.util.List<Edge> findLinks(IEdgePredicate predicate, java.lang.Boolean reverse, java.lang.Boolean follow, java.lang.Boolean direct)
```

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:* java.lang.Boolean

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:* java.lang.Boolean

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:* java.lang.Boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp"></a>

```java
public java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR PlainObject> getCfnProp(java.lang.String key)
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp.parameter.key"></a>

- *Type:* java.lang.String

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.getChild"></a>

```java
public Node getChild(java.lang.String id)
```

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:* java.lang.String

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains"></a>

```java
public java.util.List<java.util.List<java.lang.Object>> getLinkChains()
public java.util.List<java.util.List<java.lang.Object>> getLinkChains(java.lang.Boolean reverse)
```

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:* java.lang.Boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor"></a>

```java
public Node getNearestAncestor(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>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor"></a>

```java
public java.lang.Boolean isAncestor(Node ancestor)
```

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>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.isChild"></a>

```java
public java.lang.Boolean isChild(Node node)
```

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>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapse"></a>

```java
public void mutateCollapse()
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo"></a>

```java
public Node mutateCollapseTo(Node ancestor)
```

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>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseToParent"></a>

```java
public Node mutateCollapseToParent()
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist"></a>

```java
public void mutateHoist(Node newParent)
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateMove"></a>

```java
public void mutateMove(Node newParent)
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" 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.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild"></a>

```java
public java.lang.Boolean mutateRemoveChild(Node node)
```

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>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink"></a>

```java
public java.lang.Boolean mutateRemoveLink(Edge link)
```

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>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink"></a>

```java
public java.lang.Boolean mutateRemoveReverseLink(Edge link)
```

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>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateUncluster"></a>

```java
public void mutateUncluster()
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.StageNode.toString"></a>

```java
public java.lang.String toString()
```

Get string representation of this node.

##### `addStack` <a name="addStack" id="@aws-prototyping-sdk/cdk-graph.StageNode.addStack"></a>

```java
public void addStack(StackNode stack)
```

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>

---

##### `mutateRemoveStack` <a name="mutateRemoveStack" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack"></a>

```java
public java.lang.Boolean mutateRemoveStack(StackNode stack)
```

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">isStageNode</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. |

---

##### `isStageNode` <a name="isStageNode" id="@aws-prototyping-sdk/cdk-graph.StageNode.isStageNode"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.StageNode;

StageNode.isStageNode(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>

```java
import software.aws.awsprototypingsdk.cdkgraph.StageNode;

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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">isDestroyed</a></code> | <code>java.lang.Boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isMutated">isMutated</a></code> | <code>java.lang.Boolean</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>java.util.List<software.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>java.util.Map<java.lang.String, java.lang.String></code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.uuid">uuid</a></code> | <code>java.lang.String</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.children">children</a></code> | <code>java.util.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">dependedOnBy</a></code> | <code>java.util.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>java.util.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">dependencyLinks</a></code> | <code>java.util.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>java.lang.Number</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>java.lang.String</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isAsset">isAsset</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCfnFqn">isCfnFqn</a></code> | <code>java.lang.Boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCluster">isCluster</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCustomResource">isCustomResource</a></code> | <code>java.lang.Boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isExtraneous">isExtraneous</a></code> | <code>java.lang.Boolean</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">isGraphContainer</a></code> | <code>java.lang.Boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isLeaf">isLeaf</a></code> | <code>java.lang.Boolean</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">isTopLevel</a></code> | <code>java.lang.Boolean</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>java.util.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">nodeType</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>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.referencedBy">referencedBy</a></code> | <code>java.util.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">referenceLinks</a></code> | <code>java.util.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>java.util.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">reverseDependencyLinks</a></code> | <code>java.util.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">reverseLinks</a></code> | <code>java.util.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">reverseReferenceLinks</a></code> | <code>java.util.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>java.util.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>java.util.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">cfnProps</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">cfnType</a></code> | <code>java.lang.String</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfo">constructInfo</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">constructInfoFqn</a></code> | <code>java.lang.String</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.logicalId">logicalId</a></code> | <code>java.lang.String</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">rootStack</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>java.util.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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>>

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isDestroyed"></a>

```java
public java.lang.Boolean getIsDestroyed();
```

- *Type:* java.lang.Boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isMutated"></a>

```java
public java.lang.Boolean getIsMutated();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.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>

```java
public Store getStore();
```

- *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>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.uuid"></a>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Node> getChildren();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependedOnBy"></a>

```java
public java.util.List<Node> getDependedOnBy();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getDependencies();
```

- *Type:* java.util.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 })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencyLinks"></a>

```java
public java.util.List<Dependency> getDependencyLinks();
```

- *Type:* java.util.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>

```java
public java.lang.Number getDepth();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isAsset"></a>

```java
public java.lang.Boolean getIsAsset();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCfnFqn"></a>

```java
public java.lang.Boolean getIsCfnFqn();
```

- *Type:* java.lang.Boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCluster"></a>

```java
public java.lang.Boolean getIsCluster();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCustomResource"></a>

```java
public java.lang.Boolean getIsCustomResource();
```

- *Type:* java.lang.Boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isExtraneous"></a>

```java
public java.lang.Boolean getIsExtraneous();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isGraphContainer"></a>

```java
public java.lang.Boolean getIsGraphContainer();
```

- *Type:* java.lang.Boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isLeaf"></a>

```java
public java.lang.Boolean getIsLeaf();
```

- *Type:* java.lang.Boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isTopLevel"></a>

```java
public java.lang.Boolean getIsTopLevel();
```

- *Type:* java.lang.Boolean

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>

```java
public java.util.List<Edge> getLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.referencedBy"></a>

```java
public java.util.List<Node> getReferencedBy();
```

- *Type:* java.util.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 })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.referenceLinks"></a>

```java
public java.util.List<Reference> getReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getReferences();
```

- *Type:* java.util.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 })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseDependencyLinks"></a>

```java
public java.util.List<Dependency> getReverseDependencyLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>>

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseLinks"></a>

```java
public java.util.List<Edge> getReverseLinks();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>>

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseReferenceLinks"></a>

```java
public java.util.List<Reference> getReverseReferenceLinks();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getScopes();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getSiblings();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>>

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnProps"></a>

```java
public PlainObject getCfnProps();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfoFqn"></a>

```java
public java.lang.String getConstructInfoFqn();
```

- *Type:* java.lang.String

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.rootStack"></a>

```java
public StackNode getRootStack();
```

- *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>

```java
public StackNode getStack();
```

- *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>

```java
public java.util.List<StackNode> getStacks();
```

- *Type:* java.util.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>

```java
import software.aws.awsprototypingsdk.cdkgraph.Store;

new Store();,new Store(java.lang.Boolean allowDestructiveMutations);
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.Initializer.parameter.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</code> | *No description.* |

---

##### `allowDestructiveMutations`<sup>Optional</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Store.Initializer.parameter.allowDestructiveMutations"></a>

- *Type:* java.lang.Boolean

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addEdge">addEdge</a></code> | Add **edge** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addNode">addNode</a></code> | Add **node** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addStack">addStack</a></code> | Add **stack** node to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addStage">addStage</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">computeLogicalUniversalId</a></code> | Compute **universal** *logicalId* based on parent stack and construct *logicalId* (`<stack>:<logicalId>`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn">findNodeByImportArn</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">findNodeByLogicalId</a></code> | Find node within given **stack** with given *logicalId*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId">findNodeByLogicalUniversalId</a></code> | Find node by **universal** *logicalId* (`<stack>:<logicalId>`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getEdge">getEdge</a></code> | Get stored **edge** by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getNode">getNode</a></code> | Get stored **node** by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getStack">getStack</a></code> | Get stored **stack** node by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getStage">getStage</a></code> | Get stored **stage** node by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge">mutateRemoveEdge</a></code> | Remove **edge** from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode">mutateRemoveNode</a></code> | Remove **node** from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.recordImportArn">recordImportArn</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">recordLogicalId</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">verifyDestructiveMutationAllowed</a></code> | Verifies that the store allows destructive mutations. |

---

##### `addEdge` <a name="addEdge" id="@aws-prototyping-sdk/cdk-graph.Store.addEdge"></a>

```java
public void addEdge(Edge edge)
```

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>

---

##### `addNode` <a name="addNode" id="@aws-prototyping-sdk/cdk-graph.Store.addNode"></a>

```java
public void addNode(Node node)
```

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>

---

##### `addStack` <a name="addStack" id="@aws-prototyping-sdk/cdk-graph.Store.addStack"></a>

```java
public void addStack(StackNode stack)
```

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>

---

##### `addStage` <a name="addStage" id="@aws-prototyping-sdk/cdk-graph.Store.addStage"></a>

```java
public void addStage(StageNode stage)
```

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>

```java
public Store clone()
public Store clone(java.lang.Boolean allowDestructiveMutations)
```

Clone the store to allow destructive mutations.

###### `allowDestructiveMutations`<sup>Optional</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Store.clone.parameter.allowDestructiveMutations"></a>

- *Type:* java.lang.Boolean

Indicates if destructive mutations are allowed;

defaults to `true`

---

##### `computeLogicalUniversalId` <a name="computeLogicalUniversalId" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId"></a>

```java
public java.lang.String computeLogicalUniversalId(StackNode stack, java.lang.String logicalId)
```

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>

---

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId.parameter.logicalId"></a>

- *Type:* java.lang.String

---

##### `findNodeByImportArn` <a name="findNodeByImportArn" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn"></a>

```java
public Node findNodeByImportArn(java.lang.Object value)
```

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:* java.lang.Object

Import arn value, which is either object to tokenize or already tokenized string.

---

##### `findNodeByLogicalId` <a name="findNodeByLogicalId" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId"></a>

```java
public Node findNodeByLogicalId(StackNode stack, java.lang.String logicalId)
```

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>

---

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId.parameter.logicalId"></a>

- *Type:* java.lang.String

---

##### `findNodeByLogicalUniversalId` <a name="findNodeByLogicalUniversalId" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId"></a>

```java
public Node findNodeByLogicalUniversalId(java.lang.String uid)
```

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:* java.lang.String

---

##### `getEdge` <a name="getEdge" id="@aws-prototyping-sdk/cdk-graph.Store.getEdge"></a>

```java
public Edge getEdge(java.lang.String uuid)
```

Get stored **edge** by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getEdge.parameter.uuid"></a>

- *Type:* java.lang.String

---

##### `getNode` <a name="getNode" id="@aws-prototyping-sdk/cdk-graph.Store.getNode"></a>

```java
public Node getNode(java.lang.String uuid)
```

Get stored **node** by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getNode.parameter.uuid"></a>

- *Type:* java.lang.String

---

##### `getStack` <a name="getStack" id="@aws-prototyping-sdk/cdk-graph.Store.getStack"></a>

```java
public StackNode getStack(java.lang.String uuid)
```

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:* java.lang.String

---

##### `getStage` <a name="getStage" id="@aws-prototyping-sdk/cdk-graph.Store.getStage"></a>

```java
public StageNode getStage(java.lang.String uuid)
```

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:* java.lang.String

---

##### `mutateRemoveEdge` <a name="mutateRemoveEdge" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge"></a>

```java
public java.lang.Boolean mutateRemoveEdge(Edge edge)
```

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>

---

##### `mutateRemoveNode` <a name="mutateRemoveNode" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode"></a>

```java
public java.lang.Boolean mutateRemoveNode(Node node)
```

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>

---

##### `recordImportArn` <a name="recordImportArn" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn"></a>

```java
public void recordImportArn(java.lang.String arnToken, Node resource)
```

Records arn tokens from imported resources (eg: `s3.Bucket.fromBucketArn()`) that are used for resolving references.

###### `arnToken`<sup>Required</sup> <a name="arnToken" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn.parameter.arnToken"></a>

- *Type:* java.lang.String

---

###### `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>

---

##### `recordLogicalId` <a name="recordLogicalId" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId"></a>

```java
public void recordLogicalId(StackNode stack, java.lang.String logicalId, Node resource)
```

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>

---

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId.parameter.logicalId"></a>

- *Type:* java.lang.String

---

###### `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>

```java
public SGGraphStore serialize()
```

Serialize the store.

##### `verifyDestructiveMutationAllowed` <a name="verifyDestructiveMutationAllowed" id="@aws-prototyping-sdk/cdk-graph.Store.verifyDestructiveMutationAllowed"></a>

```java
public void verifyDestructiveMutationAllowed()
```

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">fromSerializedStore</a></code> | Builds store from serialized store data. |

---

##### `fromSerializedStore` <a name="fromSerializedStore" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore"></a>

```java
import software.aws.awsprototypingsdk.cdkgraph.Store;

Store.fromSerializedStore(SGGraphStore serializedStore)
```

Builds store from serialized store data.

###### `serializedStore`<sup>Required</sup> <a name="serializedStore" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore.parameter.serializedStore"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore">SGGraphStore</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>java.lang.Boolean</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>java.util.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>java.util.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">rootStacks</a></code> | <code>java.util.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>java.util.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>java.util.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>java.lang.String</code> | Current SemVer version of the store. |

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Store.property.allowDestructiveMutations"></a>

```java
public java.lang.Boolean getAllowDestructiveMutations();
```

- *Type:* java.lang.Boolean

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>

```java
public IStoreCounts getCounts();
```

- *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>

```java
public java.util.List<Edge> getEdges();
```

- *Type:* java.util.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>

```java
public java.util.List<Node> getNodes();
```

- *Type:* java.util.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>

```java
public RootNode getRoot();
```

- *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.

---

##### `rootStacks`<sup>Required</sup> <a name="rootStacks" id="@aws-prototyping-sdk/cdk-graph.Store.property.rootStacks"></a>

```java
public java.util.List<StackNode> getRootStacks();
```

- *Type:* java.util.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>

```java
public java.util.List<StackNode> getStacks();
```

- *Type:* java.util.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>

```java
public java.util.List<StageNode> getStages();
```

- *Type:* java.util.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>

```java
public java.lang.String getVersion();
```

- *Type:* java.lang.String

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.store"></a>

```java
public Store getStore();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</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>java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.source"></a>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

- *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>

```java
public java.lang.Object getValue();
```

- *Type:* java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></code> | Tags. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.attributes"></a>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.attributes"></a>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

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>java.lang.String</code> | Unique identifier for this plugin. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.version">version</a></code> | <code>java.lang.String</code> | Plugin version. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.dependencies">dependencies</a></code> | <code>java.util.List<java.lang.String></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>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

Unique identifier for this plugin.

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.version"></a>

```java
public java.lang.String getVersion();
```

- *Type:* java.lang.String

Plugin version.

---

##### `dependencies`<sup>Optional</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.dependencies"></a>

```java
public java.util.List<java.lang.String> getDependencies();
```

- *Type:* java.util.List<java.lang.String>

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>

```java
public IGraphPluginBindCallback getBind();
```

- *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>

```java
public IGraphVisitorCallback getInspect();
```

- *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>

```java
public IGraphReportCallback getReport();
```

- *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>

```java
public IGraphSynthesizeCallback getSynthesize();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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">importArnToken</a></code> | <code>java.lang.String</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.nodeType">nodeType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `importArnToken`<sup>Optional</sup> <a name="importArnToken" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.importArnToken"></a>

```java
public java.lang.String getImportArnToken();
```

- *Type:* java.lang.String

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</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">edgeType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.source"></a>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

- *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>

```java
public EdgeDirectionEnum getDirection();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.edgeType"></a>

```java
public EdgeTypeEnum getEdgeType();
```

- *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>software.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>java.lang.Boolean</code> | Indicates reverse order. |

---

##### `order`<sup>Optional</sup> <a name="order" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.order"></a>

```java
public ConstructOrder getOrder();
```

- *Type:* software.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>

```java
public IEdgePredicate getPredicate();
```

- *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>

```java
public java.lang.Boolean getReverse();
```

- *Type:* java.lang.Boolean

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>software.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>

```java
public ConstructOrder getOrder();
```

- *Type:* software.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>

```java
public INodePredicate getPredicate();
```

- *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">allNodes</a></code> | <code>java.lang.Boolean</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>java.lang.Boolean</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. |

---

##### `allNodes`<sup>Optional</sup> <a name="allNodes" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.allNodes"></a>

```java
public java.lang.Boolean getAllNodes();
```

- *Type:* java.lang.Boolean

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>

```java
public IEdgePredicate getEdge();
```

- *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>

```java
public java.lang.Boolean getInverse();
```

- *Type:* java.lang.Boolean
- *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>

```java
public INodePredicate getNode();
```

- *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>

```java
public FilterStrategy getStrategy();
```

- *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">allNodes</a></code> | <code>java.lang.Boolean</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>java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a> OR <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><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a> OR <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a> OR <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>software.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. |

---

##### `allNodes`<sup>Optional</sup> <a name="allNodes" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.allNodes"></a>

```java
public java.lang.Boolean getAllNodes();
```

- *Type:* java.lang.Boolean
- *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>

```java
public java.lang.Object getFilters();
```

- *Type:* java.util.List<<a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a> OR <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>

```java
public java.lang.Object getFocus();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a> OR <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a> OR <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>

```java
public ConstructOrder getOrder();
```

- *Type:* software.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>

```java
public FilterPreset getPreset();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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">nodeType</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">parentStack</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `parentStack`<sup>Required</sup> <a name="parentStack" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parentStack"></a>

```java
public StackNode getParentStack();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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">nodeType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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>java.lang.Object</code> | Resolved output value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.description">description</a></code> | <code>java.lang.String</code> | Description. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.exportName">exportName</a></code> | <code>java.lang.String</code> | Export name. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.attributes"></a>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *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>

```java
public java.lang.Object getValue();
```

- *Type:* java.lang.Object

Resolved output value.

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.description"></a>

```java
public java.lang.String getDescription();
```

- *Type:* java.lang.String

Description.

---

##### `exportName`<sup>Optional</sup> <a name="exportName" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.exportName"></a>

```java
public java.lang.String getExportName();
```

- *Type:* java.lang.String

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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">parameterType</a></code> | <code>java.lang.String</code> | Parameter type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.value">value</a></code> | <code>java.lang.Object</code> | Resolved value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.description">description</a></code> | <code>java.lang.String</code> | Description. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.attributes"></a>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `parameterType`<sup>Required</sup> <a name="parameterType" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parameterType"></a>

```java
public java.lang.String getParameterType();
```

- *Type:* java.lang.String

Parameter type.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.value"></a>

```java
public java.lang.Object getValue();
```

- *Type:* java.lang.Object

Resolved value.

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.description"></a>

```java
public java.lang.String getDescription();
```

- *Type:* java.lang.String

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</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">referenceType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.source"></a>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `referenceType`<sup>Optional</sup> <a name="referenceType" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.referenceType"></a>

```java
public ReferenceTypeEnum getReferenceType();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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">cdkOwned</a></code> | <code>java.lang.Boolean</code> | Indicates if this resource is owned by cdk (defined in cdk library). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.nodeType">nodeType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `cdkOwned`<sup>Required</sup> <a name="cdkOwned" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cdkOwned"></a>

```java
public java.lang.Boolean getCdkOwned();
```

- *Type:* java.lang.Boolean

Indicates if this resource is owned by cdk (defined in cdk library).

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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>

```java
public SGGraphStore serialize()
```


### 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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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">nodeType</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.nodeType"></a>

```java
public NodeTypeEnum getNodeType();
```

- *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">cfnResources</a></code> | <code>java.util.Map<java.lang.String, java.lang.Number></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>java.lang.Number</code> | Counts total number of edges in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edgeTypes">edgeTypes</a></code> | <code>java.util.Map<java.lang.String, java.lang.Number></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>java.lang.Number</code> | Counts total number of nodes in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodeTypes">nodeTypes</a></code> | <code>java.util.Map<java.lang.String, java.lang.Number></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>java.lang.Number</code> | Counts total number of stacks in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stages">stages</a></code> | <code>java.lang.Number</code> | Counts total number of stages in the store. |

---

##### `cfnResources`<sup>Required</sup> <a name="cfnResources" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.cfnResources"></a>

```java
public java.util.Map<java.lang.String, java.lang.Number> getCfnResources();
```

- *Type:* java.util.Map<java.lang.String, java.lang.Number>

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>

```java
public java.lang.Number getEdges();
```

- *Type:* java.lang.Number

Counts total number of edges in the store.

---

##### `edgeTypes`<sup>Required</sup> <a name="edgeTypes" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edgeTypes"></a>

```java
public java.util.Map<java.lang.String, java.lang.Number> getEdgeTypes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.Number>

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>

```java
public java.lang.Number getNodes();
```

- *Type:* java.lang.Number

Counts total number of nodes in the store.

---

##### `nodeTypes`<sup>Required</sup> <a name="nodeTypes" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodeTypes"></a>

```java
public java.util.Map<java.lang.String, java.lang.Number> getNodeTypes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.Number>

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>

```java
public java.lang.Number getStacks();
```

- *Type:* java.lang.Number

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>

```java
public java.lang.Number getStages();
```

- *Type:* java.lang.Number

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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.source"></a>

```java
public Node getSource();
```

- *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>

```java
public Node getTarget();
```

- *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>java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>java.util.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>java.util.List<software.constructs.MetadataEntry></code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.tags">tags</a></code> | <code>java.util.Map<java.lang.String, java.lang.String></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>java.lang.String</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.id">id</a></code> | <code>java.lang.String</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.path">path</a></code> | <code>java.lang.String</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.cfnType">cfnType</a></code> | <code>java.lang.String</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.constructInfo">constructInfo</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">logicalId</a></code> | <code>java.lang.String</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>

```java
public java.lang.Object getAttributes();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String OR java.lang.Number OR java.lang.Boolean OR <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> OR java.util.List<java.lang.String OR java.lang.Number OR java.lang.Boolean OR <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>

```java
public java.util.List<FlagEnum> getFlags();
```

- *Type:* java.util.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>

```java
public java.util.List<MetadataEntry> getMetadata();
```

- *Type:* java.util.List<software.constructs.MetadataEntry>

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.tags"></a>

```java
public java.util.Map<java.lang.String, java.lang.String> getTags();
```

- *Type:* java.util.Map<java.lang.String, java.lang.String>

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.store"></a>

```java
public Store getStore();
```

- *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>

```java
public java.lang.String getUuid();
```

- *Type:* java.lang.String

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.id"></a>

```java
public java.lang.String getId();
```

- *Type:* java.lang.String

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>

```java
public java.lang.String getPath();
```

- *Type:* java.lang.String

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.cfnType"></a>

```java
public java.lang.String getCfnType();
```

- *Type:* java.lang.String

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.constructInfo"></a>

```java
public ConstructInfo getConstructInfo();
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.logicalId"></a>

```java
public java.lang.String getLogicalId();
```

- *Type:* java.lang.String

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>

```java
public Node getParent();
```

- *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>

```java
public StackNode getStack();
```

- *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()`).

---

