/aepcli

A command-line interface of AEP-compliant APIs.

Primary LanguageGoApache License 2.0Apache-2.0

aepcli

A dynamically generated command-line interface for AEP-compliant APIs.

What is aepcli?

aepcli is a command line interface that is able to dynamically generate a CLI based on OpenAPI definitions for APIs which adhere to the aeps.

For example, if an OpenAPI definition at ./bookstore.yaml defines a resource "Book", that contains create, get, update, and delete methods, aepcli will generate the commands aepcli ./bookstore books create, aepcli ./bookstore books get, aepcli ./bookstore books update, and aepcli ./bookstore delete.

A config file can also be authored, which allows you to use a nice alias instead, making your command line look a bit more official:

aepcli bookstore books create peter-pan --title="Peter Pan".

It is useful for the following reasons:

  • It provides a highly functional CLI without the need to manually write one yourself.
  • Since the definitions are all openapi files, they can be easily shared and reused. An update for your command-line interface is just copying an openapi file (and any relevant configuration).
  • Since the schema is separate from the binary, new commands can be added without having to update the binary, and new binary updates can happen without modifying the schema.

Installation

To install the binary, download it from the releases page.

Alternatively, you can install it using go install github.com/aep-dev/aepcli/cmd/aepcli@latest.

Usage Guide

See the user guide.

List of APIs supported by aepcli

The following is a list of APIs that aepcli has been tested against. An entry is this list does not imply official support from the organization hosting the API, and is not comprehensive. If you have an API that you would like to add to the list, please open an issue or submit a PR!

Roblox:

export ROBLOX_API_KEY=YOUR_KEY_HERE
aepcli core config add roblox --openapi-path=https://raw.githubusercontent.com/Roblox/creator-docs/refs/heads/main/content/en-us/reference/cloud/cloud.docs.json --path-prefix=/cloud/v2 --server-url=https://apis.roblox.com --headers="x-api-key=${ROBLOX_API_KEY}"
aepcli roblox users get ${USER_ID}