# API Reference

This section documents FlowDrop's **stable public API** — the classes and endpoints covered by backward compatibility guarantees in the 1.x release line.

## API Classification

Every PHP class in FlowDrop carries one of two annotations:

| Annotation | Stability | Meaning |
|------------|-----------|---------|
| `@api` | **Stable** | Follows strict semver. Method signatures will not change in 1.x. |
| `@internal` | None | Implementation detail. May change in any release. |

See the [BC Policy](bc-policy.md) for the full rules.

## PHP API

### Plugin Systems

FlowDrop provides two stable plugin systems for extending functionality:

- **[Node Processor Plugin](node-processor.md)** — Create custom workflow nodes. This is the primary extension point: define parameters, implement processing logic, and your node appears in the visual editor.

- **[Orchestrator Plugin](orchestrator.md)** — Create custom workflow execution strategies (synchronous, asynchronous, stateful, etc.).

### Supporting Classes

- **[Data Types & DTOs](data-types.md)** — `ParameterBag`, `Data`, `Output`, `ValidationResult`, `ExecutionContextDTO`, `NodeMetadata`, and config editing value objects.

- **[Exceptions & Constants](exceptions.md)** — Exception hierarchy (`FlowDropException` and subclasses) and well-known constant values (`PortDirection`, `EdgeKeys`).

## REST API

- **[REST API Reference](rest-api.md)** — HTTP endpoints for workflows, node types, pipelines, port configuration, and dynamic schema.

## Quick Links

- [BC Policy](bc-policy.md) — What's stable, what can change
- [Create a Node Processor](../../development/quick-reference/define-node.md) — Step-by-step tutorial
- [CHANGELOG](https://git.drupalcode.org/project/flowdrop/-/blob/1.x/CHANGELOG.md) — Release notes
