# eia-api-go A go package for interacting with the EIA API v2 A client binary for interacting with the EIA API v2 [EIA API Documentation](https://www.eia.gov/opendata/documentation.php) ## EIA Package The EIA client wrapper at gitea.libretechconsulting.com/rmcguire/eia-api-go/pkg/eia provides a functional set of tools for common EIA API endpoints, and loads in generated endpoints with a client wrapper with auth middleware. To create a new client, be sure to pass in opts.APIKey. ```go client, err := eia.NewClient(&eia.ClientOpts{ Context: context.Background(), APIKey: os.Getenv("EIA_API_KEY"), LogLevel: os.Getenv("EIA_API_LOG_LEVEL"), }) if err != nil { panic(err) } ``` Client code is autogenerated from the published swagger spec (see "Download YAML File" link on EIA website), and a number of corrections have been made. The swagger spec claims many fields are int, float, etc.. but every single field I've see has been a quoted string. This and other issues with their spec required correction, which you can see in the `sed` commands in the [Makefile](Makefile). ## EIA Client Binary A helper tool has been created to make it easier to explore routes and facets, something the API spec alone doesn't help with. It requires at minimum an API key in environment at EIA_API_KEY. [EIA Client Documentation](docs/eia-client.md) ``` Useful utilities for EIA API v2 Usage: eia-client [command] Available Commands: completion Generate the autocompletion script for the specified shell get Commands for getting metadata help Help about any command list Commands for listing metadata Flags: --apiKey string API Key, or set EIA_API_KEY in environment -L, --apiLogLevel string Log Level for EIA API Middleware, or set EIA_API_LOG_LEVEL in environment -h, --help help for eia-client -l, --logLevel string Log Level, or set LOG_LEVEL in environment -t, --timeout duration Request timeout, or set EIA_API_TMOUT in environment (default 15s) Use "eia-client [command] --help" for more information about a command. ``` ### Installing `go install -v gitea.libretechconsulting.com/rmcguire/eia-api-go/cmd/eia-client@latest` It is strongly suggested to load autocomplete funcs. For zsh, you could add something like `source <(eia-client completion zsh)` to your zshrc/omz, etc..