|
| 1 | +# Tooling and Ecosystem |
| 2 | + |
| 3 | +In addition to an API design specification, AEPs also provide an ecosystem of |
| 4 | +tooling to help produce and interact with these APIs. |
| 5 | + |
| 6 | +## Diagram |
| 7 | + |
| 8 | +The following is a diagram that illustrates an end-to-end workflow, including |
| 9 | +nodes of tooling that exists, or is intended to be created for the project. |
| 10 | + |
| 11 | +Some of the tools in the diagram are not maintained by the AEP project. The |
| 12 | +diagram is intended to be a complete representation of tools available to help |
| 13 | +a user understand how the tools fit in to a development workflow. |
| 14 | + |
| 15 | +```mermaid |
| 16 | +flowchart TD |
| 17 | +tool([tool]) |
| 18 | +use-case[/possible use case/] |
| 19 | +user(user authored) |
| 20 | +generated{{generated}} |
| 21 | +``` |
| 22 | + |
| 23 | +The service generation tooling looks like: |
| 24 | + |
| 25 | +```mermaid |
| 26 | +flowchart TD |
| 27 | + resources("AEP Resource yaml") |
| 28 | + resources --> hub(['<a href="https://github.com/aep-dev/aepc">aepc: service API generator</a>']) |
| 29 | + hub --> proto{{"gRPC protobuf definition"}} |
| 30 | + hub --> openapi{{"OpenAPI Schema"}} |
| 31 | + hub --> graphql[/GraphQL definitions/] |
| 32 | + proto --> proto-service(your proto service) |
| 33 | + proto-service --> http-grpc{{"HTTP REST APIs via grpc-gateway"}} |
| 34 | + proto --> proto-linter([<a href="https://github.com/aep-dev/api-linter">aep-proto-linter: lint gRPC definitons for AEP compliance.</a>]) |
| 35 | + openapi --> http-generated{{api stubs via openapi-generator}} |
| 36 | + openapi --> oas-linter([<a href="https://github.com/aep-dev/aep-openapi-linter">aep-openapi-linter: lint OAS definitions for AEP compliance.</a>]) |
| 37 | + http-generated --> http-service(your http service) |
| 38 | +``` |
| 39 | + |
| 40 | +While the client tooling for an AEP-compliant compatible API includes: |
| 41 | + |
| 42 | +```mermaid |
| 43 | +flowchart LR |
| 44 | + http["AEP-compliant REST API and OpenAPI definition"] |
| 45 | + http --> cli([<a href="https://github.com/aep-dev/aepcli">aepcli: a command-line interface for AEP-compliant APIs</a>]) |
| 46 | + http --> terraform_generator(["terraform provider generator (planned)"]) |
| 47 | + terraform_generator --> terraform{{"terraform provider"}} |
| 48 | + http --> llm[/"LLM plugin (external integration)"/] |
| 49 | + http --> ui([<a href="https://github.com/aep-dev/aep-explorer">aep-explorer: interactive web UI to create, edit, list, and modify resources]) |
| 50 | + http --> sdks[/"Language-specific libraries (e.g. via openapi-generator)"/] |
| 51 | + http --> asset_inventory[/"Asset inventory and policy management tooling (external integration)"/] |
| 52 | + http --> crd_generator(["Kubernetes Custom Resource Definitions generator"]) |
| 53 | + http --> docs(["API documentation generator (planned)"]) |
| 54 | +``` |
0 commit comments