# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)

## [Unreleased]

## [v11.10.6] - 2021-10-28
- [Changed] Make meter relay state handling when processing reads case-insensitive.
- [Fixed] Fix read handling if the read contains a fraction of a watt hour.

## [v11.10.5] - 2021-10-04
- [Fixed] Fixed invalid rate plan service validation.

## [v11.10.4] - 2021-09-21
- [Changed] For Synermaxx SMS gateway replace `₱` with `PHP`.

## [v11.10.3] - 2021-09-09
- [Fixed] Insure that the vendorwiz perm exists

## [v11.10.2] - 2021-09-02
- [Fixed] Fixed issues where a meters.breaker may be NULL

## [v11.10.1] - 2021-08-27
- [Fixed] Meter reads with no caluclated usage diff are no longer flagged as suspect.

## [v11.10.0] - 2021-08-16
- [Fixed] When a customer is moved out of a location & meter pair life notes are created for the customer as well as for the location and meter
- [Added] Added endpoint for updating a user's password
- [Added] Added endpoint to adjust a customer's currency wallet.
- [Changed] The UUID version for user auth tokens was changed from V2 to V4
- [Added] Meter read processing now detects and flags out of bound reads.
- [Added] Add way to create a new tariff for portal.

## [v11.9.6] - 2021-04-29
- [Fixed] Fix kWh and KVar conversions with posted meter reads.

## [v11.9.5] - 2021-04-28
- [Changed] The raw meter read data posted is now logged before it is processed.
- [Added] Add way to move all meters on one tariff to a different tariff.
- [Added] Add way to remove future rates from a tariff.
- [Added] Add logic and endpoint to update KVA fixed charge(s) for a tariff.
- [Added] Added end point and logic to update a tariff's fixed charge.
- [Added] Added endpoint and logic to delete a rate plan from a tariff.
- [Added] Add logic to validate email addresses.
- [Added] Add logic to validate phone numbers
- [Added] Add 'offline' column to reportq table
- [Changed] Use meterreads.source for suspect reads labeling
- [Added] Add concept of PrePaid vendors and ability to switch between the 2 vending modes.
- [Changed] The output of the vendor balance report is now sorted by login

## [v11.9.4] - 2020-11-04
- [Fixed] If a customer does not have a unit wallet when the balance is queried automatically create one

## [v11.9.3] - 2020-10-29
- [Fixed] Fixed long running AMI requests being removed too soon.

## [v11.9.2] - 2020-10-28
- [Fixed] If customers wallet balance is NULL, treat is as if the balance is 0 when database.GetCurrencyWalletOfCustomer is called

## [v11.9.1] - 2020-10-27
- [Fixed] Fixed JSON parsing for /messaging/format endpoint

## [v11.9.0] - 2020-10-15
- [Deprecated] Deprecated /systemusers/get-perms URL in favor of /systemusers/perms/get
- [Added] Add endpoint to create new system users
- [Deprecated] Deprecated /systemuser/generate-token URL in favor of /systemuser/token/generate
- [Added] Add enpoint and logic for updating perms for a user
- [Added] Add endpoint for updating basic sysetm user information.
- [Changed] The Unit Wallet Adjestment endpoint now triggers an SMS/FCM to the customer

## [v11.8.2] - 2020-09-22
- [Added] Added select vendor runnable reports from the API.
- [Added] Added index to sms.action to speedup SMS dashboard display.
- [Changed] Increase the precision of the unitwallet to support upto 3 decimal places.
- [Fixed] Add missing database migrations
- [Fixed] SMS formatter no longer returns an error for accounts that don't have a currency wallet

## [v11.8.1] - 2020-09-11
- [Changed] Changes to outbound SMS processing

## [v11.8.0] - 2020-09-09
- [Changed] Tweak SMS templates for JC redeemption via SMS.
- [Added] Add FCM (Push Notification) Support
- [Added] Add transaction reversal logic
- [Added] Add transaction reversal logic
- [Added] Add initial M-PESA support
- [Added] Add table for M-PESA Express transactions
- [Changed] Add info if a com type is for a smart meter and if meter relay is manageable

[Changed] Add info if a com type is for a smart meter and if meter relay is manageable
- [Changed] Only create new meter during read processing if there is a portal give as a URL parameter.

[Changed] Only create new meter during read processing if there is a portal given as a URL parameter.
- [Added] Add support for Teleios SMS Gateway

## [v11.7.5] - 2020-05-20
- [Changed] The meter read import and USwitch endpoints are now asynchronous.

## [v11.7.4] - 2020-05-12
- [Fixed] Always use portal specific message template if present
- [Added] Add support for Multitech SMSFinder SMS gateway
- [Added] Add support Ucantel (JPS) outbound gateway

## [v11.7.3] - 2020-05-11
- [Fixed] The configuration options now correctly persist through the lifetime of a request
- [Fixed] Correctly record the login of a user making an AMI request

## [v11.7.2] - 2020-05-06
- [Fixed] Fixed issue getting average meter usage information for meter
- [Fixed] Don't use invalidated meter reads when calculating a meter's usage diff
- [Added] Add meter rollover detection when processing meter reads

## [v11.7.1] - 2020-05-05
- [Fixed] Fixed auth for "system" user

## [v11.7.0] - 2020-05-05
- [Added] Add endpoint to close a vendor's current batch
- [Added] Add endpoint to fetch vendor batch info
- [Added] Add additional SMS templates
- [Added] Add endpoint to update a customers email1
- [Added] Added new endpoint to set a customer's PIN
- [Added] Add endpoint to fetch the last token generated for an STS account & meter pair
- [Added] Add endpoint for fetching average usage info for a customer

## [v11.6.1] - 2020-03-24
- [Fixed] Make disconnections with meters using the "Default" DiscoProfile respect system settings
- [Changed] The outbound processor now handles more messages per loop
- [Added] Added additional vending permissions

## [v11.6.0] - 2020-03-09
- [Added] Added new endpoint for fetching list of permissions for the current user
- [Changed] Update the standard Unit Wallet report
- [Changed] Basic arrears data is now returned via the Transaction Adjustment endpoint if a new arrears is created
- [Added] Now recreates any missing FiFo files used for AMI coms

## [v11.5.10] - 2020-02-04
- [Fixed] Fix customer lookup when formatting arrears notice

## [v11.5.9] - 2020-01-30
- [Fixed] Fixed an occasional penny rounding error when converting a value to a currency value

## [v11.5.8] - 2020-01-20
- [Changed] Authentication issues with Alo Global SMS Gatway will now be visible in the SMS dashboard.
- [Fixed] Fixed fetching transaction records for automatic wallet transactions generated by the system

## [v11.5.7] - 2019-12-09
- [Fixed] Importing and Updating customer records now writes the Juice location ID rather than the key given in the processed request file
- [Changed] If no payplan is given for an arrears when using the transaction adjustment endpoint, default to '100%'
- [Fixed] Fixed error handling when invalid adjustemnt data is POSTed by a client, to return useful error messages and to rollback any changes already made
- [Fixed] Fixed issue in MLPP unit adjustment calculation

[Changed] Round out the units sent to a meter during an ADD to 2 decimal places for MultiSpeak_MLPP meters
- [Added] Add new table for Vending API UUID tracking

## [v11.5.6] - 2019-11-09
- [Fixed] Fixed handling cases where some transaction columns can be NULL
- [Added] Add a life note when a SETCREDIT after doing an ENROLLPPM

## [v11.5.5] - 2019-10-16
- [Added] Add check for possible duplicate contract in customer import
- [Added] Add a check for possible duplicate locname during location import

## [v11.5.4] - 2019-09-27
- [Fixed] Fixed an issue where an outbound SMS message could be sent twice

[Changed] Change the wait time between checks for pending outbound SMS messages

## [v11.5.3] - 2019-09-20
- [Fixed] Fix location lookup on location import
- [Fixed] Don't try to send units for a meter com-type that does not support meter level pre-pay
- [Changed] Improve life note wording when sending units for MLPP meters
- [Added] Added support for Alo Global SMS gateway

## [v11.5.2] - 2019-09-05
- [Fixed] Fixed typo in error message returned when not configured to sent out SMS messages

## [v11.5.1] - 2019-08-28
- [Fixed] Fixed issue where attaching a meter to a location from location update trinity file would fail
- [Fixed] The database columns for the primary and secondary phone number, SMS number, and email is no longer nullable

## [v11.5.0] - 2019-08-21
- [Changed] Round the calculated wallet balance if requesting the balance at a certian point in time
- [Added] Added an endpoint to get the current wallet balance for multiple customers

## [v11.4.0] - 2019-08-09
- [Added] Added an endpoint to get the current wallet balance of a customer meter pair

## [v11.3.3] - 2019-08-02
- [Changed] Force SMS notifications to customers when purchasing power, and low balance notices to be enabled by default
- [Changed] A life note is now recorded if the meter relay state is changed by a read

## [v11.3.2] - 2019-07-26
- [Changed] The first meter read for a meter now imports with a usagediff of 0
- [Added] Add support for Clickatel SMS gateway

## [v11.3.1] - 2019-07-02
- [Fixed] Correct character encoding for babel table
- [Added] Added a delay between MLPP enrollment and set credit commands

## [v11.3.0] - 2019-05-29
- [Added] Add New Synermaxx SMS gateway
- [Added] Notify customers via SMS when a new arrears is added to their account
- [Added] Added new SMS/Email message formatter and templates

## [v11.2.3] - 2019-05-14

## [v11.2.2] - 2019-05-08
- [Added] Added a way to estimate out a price per kWh and estimate currency value of a unit wallet

## [v11.2.1] - 2019-04-30
- [Fixed] Fixed "Wallet" field in trinity meter import/update to expect "units" not "unit"

## [v11.2.0] - 2019-04-26
- [Fixed] Arrears Import endpoints always using CISTransfer arrears type even if a different COA is given
- [Added] Added endpoint to get list of configured arrears types
- [Fixed] Fixed how arrears and transaction IDs are handled when creating a new arrears on a customer
- [Changed] Credit adjustments now always go into the customer's currency wallet, making the transaction adjustment endpoint only accept currency values
- [Added] Added endpoint for getting list of arrears, with optional payment details, for an account
- [Added] Added a flag to list of arrears by arrears type endpoint to display detailed payment information, if any

## [v11.1.7] - 2019-04-24
- [Fixed] Fixed trying to use a DB column that no longer exists in transactions table
- [Added] Added amount paid towards arrears to the transaction dump output
- [Fixed] Fixed the amount field in transaction dump so that it will dispaly one of the following: amount towards services, amount towards wallet, total transaction amount
- [Fixed] Fix a false negative lookup when updating a customer/location/meter and only changing trinity information

[Fixed] Fixed false negitive when checking if customer/loc/meter was updated/exists in trinity import/update

## [v11.1.6] - 2019-04-23
- [Fixed] Fixed data type for stskeyrev DB column to be an int
- [Added] Added AMI Wallet field to trinity meter file definition
- [Changed] The transaction dump endpoint now returns the purchase amount towards kWh as "amount"
- [Added] Added endpoint to get basic meter details for a single meter

[Added] Added endpoint to get basic meter information
- [Added] Add endpoint to fetch basic details for a location

[Added] Added endpoint to fetch basic location information
- [Added] Add endpoint to fetch basic customer account information for a customer

[Added] Added endpoint to fetch basic information about a customer account

## [v11.1.5] - 2019-04-16
- [Fixed] Fixed account lookup when updating customer information via trinity API

## [v11.1.4] - 2019-04-15
- [Fixed] Fixed handing of Juice keys in Trinity Import API

## [v11.1.3] - 2019-04-15
- [Fixed] Fixed where account, loc, meter tritity wasn't getting updated if adding account to location with no meter

## [v11.1.2] - 2019-04-15
- [Fixed] Fixed requsting customer and location keymaping only returning entries with 3rd party keys in Juice

## [v11.1.1] - 2019-04-09
- [Changed] Transaction kWh is now reported as "kWh" in transaction dump
- [Changed] Transaction dump now shows transaction type

## [v11.1.0] - 2019-04-08
- [Added] Add endpoint for posting wallet credit (currency/unit) or issue new arrears
- [Added] Added an endpoint to get a dump of transactions for a 24 hour period of time

## [v11.0.2] - 2019-03-19
- [Added] Added default template system user accounts

## [v11.0.1] - 2019-03-05
- [Fixed] Increased encryptor.auth_token index size to account for API token length

## [v11.0.0] - 2019-02-25
- [Changed] Cleanup unit wallet adjustment endpoint (Breaking change)
- [Added] Add endpoint to handle MLPP mode validation
- [Added] Add endpoint handle unit wallet reconciliation with MLPP meters
- [Added] Add endpoint to sync meter credit balance with customer wallet balance
- [Added] New STS6 support
- [Added] Added missing STS commands
- [Fixed] Correct value conversions for Max Power Limit tokens
- [Changed] All STS endpoints that result in a token return a transaction ID if the request was successfull
- [Added] Update the meters meters.sts_version value if the upgrade request returned a token
- [Fixed] Correct token command matching when creating a transaction record
- [Added] Added new STS endpoint to trigger a 4->6 version upgrade for a meter
- [Added] It is now possible to tell the API to return fake STS tokens
- [Changed] Token requests are now made via a HTTP POST rather than a GET request
- [Changed] New entries in the stsmq table now have a fixed "CREATE" status rather than "reqN"
- [Added] Added colum in meters table to track a STS meter's version
- [Added] Add new `encryptor` table for storing information on STS encryptors
- [Added] Add endpoint to attach a meter to a location and account
- [Added] Add endpoint to remove a meter from the attached location and account
- [Added] Add endpoint to preform a meter swap on a location
- [Changed] Remove serial number parameter for move out/in calls
- [Changed] database.GetMeter now returns an empty struct if serial number is "unassigned"
- [Added] Add endpoint to update the com-type of a meter

## [v0.10.9] - 2018-10-16
- [Changed] The path for where AMI/AMR requests are written to is now semi-configurable

## [v0.10.8] - 2018-10-15
- [Changed] Repurpose meters.server column to store a key rather than IP

## [v0.10.7] - 2018-09-28
- [Changed] Make email RFC 5322 complient

## [v0.10.6] - 2018-09-28
- [Fixed] Fixed how SMTP port is handled to allow SSL/TLS cert for mail server to be verified correctly

## [v0.10.5] - 2018-09-25
- [Changed] Expand error message if meterread CSV or JSON fails to be parsed
- [Changed] The callback handler now imports read data for meters if any is provided

## [v0.10.4] - 2018-09-18
- [Added] Add config option to set default timezone to use for DB connection
- [Added] Added endpoint for creating new rate plans on a tariff

## [v0.10.3] - 2018-09-07
- [Changed] Update CI configuration for Go 1.11

## [v0.10.2] - 2018-09-07
- [Added] If a AMI request times out there is now a life note stating such

## [v0.10.1] - 2018-08-29
- [Added] Add migration to make parent vendor column of DB match vendornumber column
- [Changed] Make JuiceCard endpoints return formatted currency value
- [Added] Add new vending endpoint to preform a wallet transfer
- [Added] Add new route to get basic customer and wallet info for consumers of Vending endpoint

## [v.0.10.0] - 2018-08-10
- [Added] Add support for JPS Axis comtype
- [Changed] AMI/AMR commands now support multiple servers with the same communication type

## [v0.9.1] - 2018-05-14
- [Changed] DB migration script now works with a remote database server
- [Changed] Make _migrate.pl_ work with remote SQL servers
- [Fixed] Don't add arrears to non-existing accounts through arrears importer
- [Changed] Currency values is now handled at the cent level
- [Added] Add endpoint to list accounts with a positive currency wallet balance
- [Added] Add endpoint to list all accounts that owe arrears, and their current balance
- [Added] Add endpoint to handle vendor payments

## [v0.9.0] - 2018-03-12
- [Changed] Update meterstate from the meter reads endpoint

## [v0.8.1] - 2018-02-15
- [Fixed] Fix backwards boolean in DB.CheckUserPerms method

## [v0.8.0] - 2018-02-08
- [Fixed] Correct invalid TIMEOUT -> INPROGRESS status changes when timing out old requests
- [Changed] The time the system will wait before timing out a request is now configurable
- [Added] Add endpoint to get list of supported units

## [v0.7.4] - 2018-01-19
- [Changed] Request ID for meter requests is no longer unique
- [Changed] Update MQ timeout logic to force Connect/Disconnect requests tries from the backend by resetting the meter state so that _cron-nearrealtime_ will catch it on next run

## [v0.7.3] - 2018-01-18
- [Fixed] Fix meterstate when sending a connect command for a meter, the state should be `CONNECTING` rather than `DISCONNECTING`

## [v0.7.2] - 2018-01-15
- [Fixed] Fix sending wrong `meterstate` for meters
- [Fixed] Fix issues with syncing unitwallets creating duplicates
- [Changed] Don't try to send SMS messages if system is not configured for it
- [Fixed] Fix timedate parsing for PENDINGDISCO and DISCORANGE modes
- [Added] Add endpoint to git current tariffs and rates per portal

## [v0.7.1] - 2017-12-20
- [Added] Add background task to sync unit wallets daily based on unit wallet transactions
- [Changed] Make sync unit wallet database call work for multiple wallet types and create wallets if need

## [v0.7.0] - 2017-12-20
- [Fixed] Fix updating unit wallet not working correctly in some cases
- [Added] Add a unit wallet import endpoint

## [v0.6.12] - 2017-12-18
- [Added] Add logging to background pending disconnection logic
- [Fixed] Fix missing error message if `is-holiday` check is called without a date

## [v0.6.11] - 2017-12-14
- [Added] Add a concept of Disco Range to background disconnection logic

## [v0.6.10] - 2017-11-29
- [Fixed] Fix issue where first non-zero read does not generate a usage diff

## [v0.6.9] - 2017-10-18
- [Fixed] Increase size of meterstate column in the database

## [v0.6.8] - 2017-10-04
- [Changed] Close response body after reading when handling Elmar outbound SMS
- [Changed] Improve reading of response body when handling Elmar SMS
- [Added] Add a `DISCONNECTING` and `CONNECTING` meter state
- [Fixed] Fix invalid logic with SMS retry timeout wait
- [Fixed] Fix issues with MQ expiration and purging incorrectly affecting records
- [Changed] Append a new line when sending a command to an AMI connector
- [Added] Add a endpoint to send Emails

## [v0.6.7] - 2017-08-23
- [Added] Add account number and meter serial number to data returned from SMS endpoint

## [v0.6.6] - 2017-08-18
- [Fixed] Fix issues with SMS `GetQueuedMessages` query

## [v0.6.5] - 2017-08-18
- [Changed] Improve phone number validation logic

## [v0.6.4] - 2017-08-08
- [Changed] Pass meter serial number when validating AMI/AMR request against MQ table

## [v0.6.3] - 2017-08-08
- [Changed] If system user is used to send text messages then set the portal from the config file

## [v0.6.2] - 2017-08-08
- [Fixed] Don't sync FiFo files and handle errors when dealing with the FiFo files better

## [v0.6.1] - 2017-08-02
- [Changed] Allow a portal to have multiple regions for SMS phone number validation defined

## [v0.6.0] - 2017-08-01
- [Changed] Add life notes when ever a trinity event happens on a customer, location, or meter
- [Fixed] Fix issue where DB.syncLocTariff would fail if called multiple times fo the same meter
- [Fixed] Fix issue with account/location association during meter import
- [Added] Add endpoint for requesting customers/location Juice ID and External ID keypair
- [Changed] When importing new locations/customers with the flat-file importer the Juice ID and External ID keypair is returned
- [Changed] DB.lookupByContract and DB.lookupByLocName can return an error
- [Added] When a message has failed to send wait the number of minutes set in the `sms_retry_window` field of the config file in the portal's SMS gateway configuration
- [Added] If SMS gateway reports an error when trying to send an SMS retry three more times before failing that message
- [Changed] Avoid cases where duplicate messages might be sent to a customer if original requests takes to long to send
- [Added] Add support for outbound SMS via Twilio with phone number validation through Twilio's lookup API
- [Removed] Remove dependency on `Juice4` smsprocessor
- [Changed] Break out handling incoming requests to send new messages and handling messages currently queued
- [Changed] Refactor SMS structure to be generic rather than passing around a vendor specific structure

## [v0.5.1] - 2017-07-28

## [v0.5.0] - 2017-07-11
- [Changed] Update _database/data/report.csv_
- [Changed] ComLookup now returns an error if the requested com type is not found, or if another error was encountered
- [Added] Add some tests for internal/meter package
- [Added] Add an endpoint to get all supported com types for the system
- [Changed] Refactor how meter com types are handled internally
- [Added] Add support for PendingAny meter DiscoProfile
- [Fixed] Sanitize possible sensitive User/SystemUser information from logs

## [v0.4.14] - 2017-06-27
- [Changed] Tweak logging for SMS messages slightly

## [v0.4.13] - 2017-06-16
- [Changed] Improve how the importer and exporter scripts handle data containing newlines

## [v0.4.12] - 2017-06-02
- [Changed] Display the body in the logs when some SMS gateways return an HTTP code other than 200 or 202

## [v0.4.11] - 2017-06-02
- [Changed] Update default content table contents
- [Added] Add migration to update content table

## [v0.4.10] - 2017-06-01
- [Changed] Check HTTP status code is 200 when dealing with some SMS gateways

## [v0.4.9] - 2017-06-01
- [Changed] Ensure HTTP status codes for SMS requests are logged

## [v0.4.8] - 2017-05-30
- [Changed] Check for HTTP status codes when dealing with certian SMS gateways

## [v0.4.7] - 2017-05-30
- [Changed] Improve SMS API error reporting
- [Changed] Make auth check less noisy in the log file when not in debug mode

## [v0.4.6] - 2017-05-30
- [Changed] Change how SMS errors are handled

## [v0.4.5] - 2017-05-24
- [Changed] Set meters `lastreadreq` when a request to read a meter is recived
- [Changed] Set customers `group6` when connecting/disconnecting a meter attached to an account

## [v0.4.4] - 2017-05-24
- [Fixed] Make sure portal gets set if MQ request returns as failed
- [Fixed] If a Connect/Disconnect request fails reset meter state

## [v0.4.3] - 2017-05-23
- [Fixed] Don't grab invalid meter reads when getting last read for meter
- [Fixed] Fix tests after change to health-check endpoint

## [v0.4.2] - 2017-05-23
- [Fixed] Force timestamps to string to work around MySQLs odd way of handling timezones

## [v0.4.1] - 2017-05-23
- [Fixed] Correct meterread -> meterreads when looking up last read value for a meter

## [v0.4.0] - 2017-05-22
- [Added] Add the ability to filter get-meters endpoint by meter com type
- [Fixed] Fix release script not coping meter-coms.toml file
- [Changed] Append a new line when displaying version information

## [v0.3.3] - 2017-05-18

## [v0.3.2] - 2017-05-18
- [Changed] Correctly set version on release build

## [v0.3.1] - 2017-05-18
- [Added] Add migration to add `Elmar_otv` to com table

## [v0.3.0] - 2017-05-18
- [Added] When processing meter reads, if a meter doesn't exist create one
- [Changed] Return the number of processed reads even if there was an error
- [Added] Add endpoint for processing bulk meter read info formatted as either JSON or CSV
- [Changed] Make GetCustomerHistory return a variable amount of history
- [Changed] Send a bad request HTTP status code if given an invalid STS command
- [Added] Add Checks to see if phone number and message text fields are blank in SMS endpoint
- [Added] Add ability to preform a graceful shutdown
- [Added] Add flag to get version and build info
- [Fixed] Format from kWh to Wh when writing STS tokens to transactions

## [v0.2.1] - 2017-02-21
- [Added] Add start of vending endpoint
- [Fixed] Fixed bug in STS logic where request date time wasn't being populated

## [v0.2.0] - 2017-02-20
- [Added] Add ability to handle STS commands
- [Changed] Handle cases where Balance Adj endpoint is sent an empty file

## [v0.1.1] - 2017-02-06
- [Changed] Allow arrears to be imported with a Created/Start date other than now
- [Added] Add an installer
- [Added] Move database scripts to API repo
- [Fixed] Correctly return a HTTP 400 status code on errors
- [Fixed] Account for URL encoding when splitting JuiceCards
- [Changed] _GetJuiceCardsByBatch_ now takes an int instead of a string
- [Changed] Refactor _main.go_ to handle DB abstraction
- [Changed] Refactor juicecard internal package to be cleaner and testable
- [Changed] Refactor database internal package to abstract away the database
- [Changed] Rename _internal/juicecards/main.go_ to _card.go_
- [Added] Adding basic health check
- [Changed] Rename _internal/database/main.go_ to _db.go_
- [Added] Add a simple init script for multiple instances of JuiceAPI running on same system
- [Changed] When working with multiple JuiceCards use '+' as a delimiter rather than newlines
- [Changed] Update JuiceCard endpoint to give more information when verifing or activating cards
- [Added] Add support for verifing JuiceCards before activating them
- [Changed] Change config file syntax and parsing
- [Added] Adding JuiceCard validate support
