A forest specification, or ForestSpec, is a way for your code to identify the forest that you'd like to access. The forest may come from different sources – it could be a structure, it could be a transformed structure, it could be a result of query or some other types of forest source.

So the first step before you read or update a forest is to create an instance of ForestSpec. Here are some examples of how you can do that.

Desired forestForestSpec expression
Base Content
Structure #123
ForestSpec.structure(123)
CODE
Result of a JQL query
ForestSpec.sQuery("jql", "priority = Blocker")
CODE
Result of a text query
ForestSpec.sQuery("text", "text to find")
CODE
Adjusted Content
Structure #123, sorted by Priority
ForestSpec.structure(123).transform(
    CoreStructureGenerators.SORTER_ATTRIBUTE, ImmutableMap.of(
        "attribute", (Object) ImmutableMap.of("id", IssueFieldConstants.PRIORITY, "format", "order")
        "desc", true
    )
);
CODE
Structure #123, skeleton only (without dynamic content)
ForestSpec.skeleton(123)
CODE
Structure #123, with title row
ForestSpec.skeleton(123).withTitle()
CODE


More details are available in Javadocs for ForestSpec.