The qn-marketplace-cli is a command line interface for the QuickNode Marketplace.
It provides:
- A set of commands to test an add-on's provisioning implementation
- A command to test your an add-on's SSO implementation
- A command to test your an add-on's RPC methods
The CLI is designed to allow you to test your QuickNode Marketplace add-ons directly on your localhost environment as your a developing them.
To install qn-marketplace-cli to your machine, you can download a pre-built binary for your operating system from the bin directory of this repo.
You can also download this repository and build the code on your local machine. See the Development section below for more information on how to do that.
To get more information about how to use the CLI, use the following command:
qn-marketplace-cli help
Please note that if you are debugging and want to see more information, you can use the --verbose flag for every command.
QuickNode Marketplace add-ons must implement four provisioning API endpoints:
- Provision (POST): called when a QuickNode customers installs the add-on on an endpoint.
- Update (PUT): called when a previously provisioned endpoint gets updated.
- Deactivate Endpoint (DELETE): called when a previously provisioned endpoint gets discarded.
- Deprovision (DELETE): called when the add-on is uninstalled for a customer account (for all endpoints)
The qn-marketplace-cli has 4 different commands that allows you to test each one of these actions in isolation:
PROVISION:
qn-marketplace-cli provision --url=http://localhost:3000/provision --basic-auth=q24rqaergser --chain=ethereum --network=mainnet --plan=your-plan-slug --quicknode-id=abcdef --endpoint-id=foobar --endpoint-url=https://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --wss-url=wss://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --add-on-id 33 --add-on-slug your-addon-slugUPDATE:
qn-marketplace-cli update --url=http://localhost:3000/update --basic-auth=q24rqaergser --chain=ethereum --network=mainnet --plan=your-plan-slug --quicknode-id=abcdef --endpoint-id=foobar --endpoint-url=https://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --wss-url=wss://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --add-on-id 33 --add-on-slug your-addon-slugDEACTIVATE ENDPOINT:
qn-marketplace-cli deactivate --url=http://localhost:3000/deactivate_endpoint --basic-auth=q24rqaergser --endpoint-id=foobar --add-on-id 33 --add-on-slug your-addon-slugDEPROVISION:
qn-marketplace-cli deprovision --url=http://localhost:3000/deprovision --basic-auth=q24rqaergser --quicknode-id=abcdef --add-on-id 33 --add-on-slug your-addon-slugIt also has one command that allows you to test all four actions at once:
qn-marketplace-cli pudd --base-url=http://localhost:3000/ --basic-auth=q24rqaergser --chain=ethereum --network=mainnet --plan=your-plan-slug --endpoint-url=https://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --wss-url=wss://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --add-on-id 33 --add-on-slug your-addon-slugQuickNode Marketplace add-ons extends our capabilities by adding new JSON-RPC methods to QuickNode's existing endpoints. Please read this guide for more information.
If your add-on has RPC methods, the qn-marketplace-cli allows you to test your implementation by making some JSON-RPC calls to your application.
qn-marketplace-cli rpc --url=http://localhost:3000/rpc --method=your_addOnMethod --rpc-params='[9, "f"]' --chain=solana --network=mainnet --endpoint-url=https://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --wss-url=wss://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --add-on-id 33 --add-on-slug your-addon-slugqn-marketplace-cli is developed using Go and Cobra and released under an MIT License.
We welcome contributions to this repository to help us improve the CLI.
To fetch, build and install from the Github source:
go install github.com/quiknode-labs/qn-marketplace-cli@latest
To build the project:
go build -o bin/qn-marketplace-cli
Then:
bin/qn-marketplace-cli
You can use the following commands to test locally if you have an application that is hosted at http://localhost:3030.
For example, if you are using our marketplace-starter-js repo, which is a
sample add-on built with node.js, then you can use the following commands, assuming you have set the username and
password to username and password respectively.
go buildYou can test the 4 provision actions:
./qn-marketplace-cli provision --url http://localhost:3030/provisioning/provision --chain ethereum --network mainnet --plan test --quicknode-id foobar --endpoint-id bazbaz --basic-auth dXNlcm5hbWU6cGFzc3dvcmQ=
./qn-marketplace-cli update --url http://localhost:3030/provisioning/update --chain ethereum --network mainnet --plan test --quicknode-id foobar --endpoint-id bazbaz --basic-auth dXNlcm5hbWU6cGFzc3dvcmQ=
./qn-marketplace-cli deactivate --url http://localhost:3030/provisioning/deactivate_endpoint --quicknode-id foobar --endpoint-id bazbaz --chain ethereum --network mainnet --basic-auth dXNlcm5hbWU6cGFzc3dvcmQ=
./qn-marketplace-cli deprovision --url http://localhost:3030/provisioning/deprovision --quicknode-id foobar --endpoint-id bazbaz --chain ethereum --network mainnet --basic-auth dXNlcm5hbWU6cGFzc3dvcmQ=Or you can test them all at once with PUDD:
./qn-marketplace-cli pudd --base-url http://localhost:3030/provisioning --quicknode-id foobar --endpoint-id bazbaz --chain ethereum --network mainnet --basic-auth dXNlcm5hbWU6cGFzc3dvcmQ=QuickNode Marketplace add-ons can provide a user-interface or dashboard that QuickNode customers can access from a link on their quicknode.com account. In order to seamlessly these customers from quicknode.com to Marketplace add-ons, an add-on can implement SSO. You can read this guide for more information on how SSO works with the QuickNode Marketplace.
Provide the provision url which should return a dashboard-url in the response. This will open a browser pointing to the dashboard url with the provisioned information.
./qn-marketplace-cli sso --url http://localhost:3030/provisioning/provision --email luc@example.com --name Luc --org QN --jwt-secret jwt-secret --basic-auth dXNlcm5hbWU6cGFzc3dvcmQ= --endpoint-url=https://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/ --wss-url=wss://long-late-firefly.quiknode.pro/4bb1e6b2dec8294938b6fdfdb7cf0cf70c4e97a2/./qn-marketplace-cli rpc --url http://localhost:3030/provisioning/provision --rpc-url http://localhost:3030/rpc --rpc-method qn_fetchStuff --rpc-params "[\"abc\",123,\"zoo\"]" --basic-auth dXNlcm5hbWU6cGFzc3dvcmQ=./qn-marketplace-cli healthcheck --url http://localhost:3030/healthcheckYou can easily integrate qn-marketplace-cli into your CI workflows so that your add-on
is automatically tested by the CLI on every new pull request.
To see how to accomplish this, check out our Github Workflow for marketplace-starter-go
MIT