/// Used to specify API credentials. These are not required as long as LUNANODE_KEY_ID and LUNANODE_API_KEY are specified in the environment.
pubstructApiKeys{
#[clap(long, takes_value=true, env="LUNANODE_KEY_ID", help="The API key ID from the Lunanode Dashboard.", long_help="The API key ID from the Lunanode dashboard. You may also specify this option via the LUNANODE_KEY_ID environment variable.")]
/// The API id string as used by LunaNode. This should be exactly 16 bytes. This will get enforced at a later date.
pubapi_id: String,
#[serde(skip)]
#[clap(long, takes_value=true, env="LUNANODE_API_KEY", help="The Lunanode API key received from the dashboard.", long_help="The Lunanode API key recieved from the dashboard. This option may also be set by the LUNANODE_API_KEY environemnt variable.")]
/// Used for convenience. It is not serialized nor deserializes; this means that this object can NOT be deserialized at all, since this is not an Option<String>.
/// This is used to fill in the api_paritlakey field, and to give the request a way to access the api key locally.
pubapi_key: String,
#[clap(long, takes_value=true, env="LUNANODE_API_PARTIALKEY", help="The Lunanode API key received from the dashboard, but only the first 64 bytes of it.", long_help="The Lunanode API key recieved from the dashboard. This option may also be set by the LUNANODE_API_PARTIALKEY environemnt variable. This should be autogenerated based on the LUNANODE_API_KEY, but it isn't. TODO.")]
/// The api_paritalkey field as used by LunaNode (the first 64 bytes of the api_key). Note that this field is autofilled.
/// Since this should always be a 64 byte array, this will be enforced at some point in the future. TODO
/// The resposne type you expect after making this request.
/// Setting this will allow acces to a generic function, make_request, that will expect this type to be recieved.
/// See: make_request
typeresponse: LunaNodeResponse;
/// Can't genericize this one out. You need to implenent a function which can return a set of API keys for creating an API requst.
fnget_keys(&self)-> ApiKeys;
/// The LunaNode API endpoint you'll be using.
/// Note: do *NOT* add a leading slash, but *DO* include a trailing slash.
/// The three wrong ways: "/vm/list", "vm/list", "/vm/list",
/// The only correct way: "vm/list/".
fnurl_endpoint(&self)-> String;
/// A generic function to recieve a specific relsponse type from the server.
/// The Self::response type is the type you're expecting. In the case that this type is incorrect, or the server returns bad data, you will receive an LNError::SerdeError(serde::Error, String), with the String being a raw response from the server.
/// You may also recieve any other error defined in LNError, including timezone errors due to not being able to create a nonce value for the request.