This repository has been archived by the owner on Mar 8, 2024. It is now read-only.
Releases: PayString/paystring
Releases · PayString/paystring
v1.4.0
This release focuses on improving the developer experience of the PayID reference implementation, specifically reducing friction when using the PayID CLI tool for verifiable PayID. Additionally, we added some legal disclaimers and improved error notifications.
Features
- New version of the Admin API (2020-08-25) (BREAKING CHANGE):
- All edit endpoints (
PUT
&POST
) now accept the same payload as the Public API when you pass in a newer date based version header (dates>= '2020-08-25'
), retrieval endpoints (GET
) also return the same format:
- All edit endpoints (
// Admin API now shares the same interface as the Public API
{
payId: string
version: string
addresses: [
paymentNetwork: string
environment: string
addressDetailsType: string
addressDetails: {
address: string
}
]
verifiedAddresses: [
{
payload: string
signatures: [
{
name: string
protected: string
signature: string
}
]
]
}
- Updated legal terms disallowing the downloading, usage, reproduction or distribution of PayID code in Australia
Fixes
PATCH
now throws an error if you update a PayID that hasverifiedAddresses
. Allowing this behavior would invalidate the signatures used to verify the previously storedverifiedAddresses
.
Project Internals
- Refactored some shared logic across
POST
andPUT
- Extending tests to guarantee the Admin API works across versions
v1.3.0
This release was mostly about V. PayID, and adding support for the "self-sovereign" identity keys, which we anticipate being most useful in a non-custodial setting. Here is the RFC describing self-sovereign Verifiable PayID.
Features
- Add V. PayID support
- Add
identityKey
as a nullable property on PayID accounts - Add
identityKeySignature
as a nullable property on a PayID address - Admin API GET/POST/PUT/DELETE for V. PayID accounts and addresses
- Add V. PayID keys to the response object for Public API (PayID Protocol) requests
- Add
- Push metrics now report the "serverAgent" (so the fact that this is the Xpring Reference Implementation server), and the "protocolVersion" (so which version of PayID the server currently supports).
- Add a
version
property to PayID Protocol (Public API) responses, as this is potentially how we will version PayID in the future, instead of using aPayID-Version
header.
Fixes
- Distinguish between a 404 because the PayID did not exist, and a 404 because the PayID account existed, but had no associated addresses (if you can't pay a PayID, does it actually exist?)
Project Internals
- Bump various dependencies
- Refactor metrics such that we now use the payid-org/server-metrics library.
v1.2.0
Features
- Add PayID Discovery route to Public API
- PayID Discovery can now be performed by sending a GET request to
/.well-known/webfinger?resource={payId}
- PayID Easy Checkout Discovery enabled
- PayID Discovery can now be performed by sending a GET request to
- Add PATCH HTTP method to Base PayID path
Fixes
- Fix Admin API GET
- Fix a bug so that if you GET a user on the Admin API that has no associated addresses, you now get a 200 with a payload with an empty address array rather than a 404 - Not Found.
- Release script fixes
- Fix dev environment, which was not working on Windows
Project Internals
- Bump various dependencies
- Refactor Admin API
- Remove compareVersions from linter
- Improve release tooling
- E2E testing for Content-Type and Accept headers for PATCH
- Refactor
AchAddressDetails
toFiatAddressDetails
v1.1.0
Features
- Add
Cache-Control: no-store
to Public API responses- PayID responses should never be cached. You don't want to send money to a
[address, tag]
tuple when the tag has been subsequently rotated by the exchange.
- PayID responses should never be cached. You don't want to send money to a
- Allow using a custom PostgreSQL port using a new
DB_PORT
environment variable. - Made pushing PayID server metrics to the Xpring Prometheus gateway opt-out
- Only the domain name of the PayID server, count of PayIDs, count of addresses by
[paymentNetwork, environment]
, and number of lookup requests by[paymentNetwork, environment]
are recorded. No identifying information is recorded or pushed as metrics. - Can opt out by setting the
PUSH_PAYID_METRICS
environment variable to false.
- Only the domain name of the PayID server, count of PayIDs, count of addresses by
- Added a Prometheus Gauge to track the total number of PayIDs per PayID server for metrics.
Fixes
- Update seeded database values to use Classic Address format for XRPL addresses
- The community decided all XRPL addresses should be shipped in classic/tag format, rather than
xAddress
format.
- The community decided all XRPL addresses should be shipped in classic/tag format, rather than
- Added a
.gitattributes
file to fix line endings on Windows - Fixed requests using
payid+json
incorrectly returning a 200 rather than a 404 for PayIDs that did not exist #598
Documentation
- Fixed various broken links
- Renamed the "Private API" to the "Admin API" to clarify its intended purpose and functionality.
Project Internals
- Bumped various linting plugins
- Added
@throws
JSDoc tags to all the functions that throw - Banned Yarn usage, since we have a
package-lock.json
file - Pulled our TypeScript
HttpStatus
enum out into an independent library - Added a CI library to automatically check for broken links
- Run Dependabot waaay less often (weekly, not daily)
- Made all types
readonly
because we're better at TypeScript
v1.0.1
Features
- Properly licensed under Apache 2.0
- Log all successful requests when logLevel is set to
DEBUG
Fixes
- Remove
unknown
from valid lookup results in metrics reporting - Fix bug in metrics reporting introduced by refactoring
Documentation
- Move various bits of documentation to the official PayID documentation website.
- Move RFCs to the official PayID RFC repository.
- Various code comments in the source code.
- Update various links throughout documentation.
Project Internals
- Add
max-warnings = 0
for ESLint so we don't commit linting warnings - Remove various bits of unneeded logic (Travel Rule)
- Update Dependabot configuration
- Refactor error handling to report less 500s on database errors, and remove some unneeded
try catch
statements - Bump some development dependencies
v1.0.0
Features
- Moved functionality intended to be overridden into the
src/hooks
directory - Added a default Prometheus server for pushing metrics in
config.ts
- Added Lefthook (a git hook helper) to repo to assist in linting and testing code before pushes.
- Added a
docker-compose.yml
file to easily allow spinning up a containerized Postgres database, or a database + Node.JS PayID HTTP server for easy development. - Added issue templates for bugs and features to the PayID repository
- Added a health check HTTP endpoint for the Private API
- Added Prettier formatting of Markdown and JSON files to our
lint
script
Fixes
- Allow CORS requests for the public API / PayID Protocol
- Totally reasonable for browsers to make PayID queries
- Fix private API not accepting PayIDs with capital letters.
- PayIDs are, by definition, case-insensitive, but there was a bug requiring all PayIDs provided to the private API to be all lowercase. It is now smart enough to call
.toLowerCase()
itself.
- PayIDs are, by definition, case-insensitive, but there was a bug requiring all PayIDs provided to the private API to be all lowercase. It is now smart enough to call
- Updated the Dockerfile to use a non-root user.
Documentation
- Added documentation for version headers
- Clean up some existing documentation
- Moved a lot of documentation that lived in this repo to the official PayID documentation website.
- Add a
CONTRIBUTING.md
file
Project Internals
Refactors
- Refactor tests to one
describe
block per test file - JSDoc the entire codebase
- Update
package.json
- Sort properties to their canonical order
- Add an
engines
property - Move
nyc
code coverage configuration to a standalong config file
- Update
tsconfig
- Change target to
ES2019
- Check that we are consistent in filename casing
- Tell TypeScript to do incremental compilation which might speed up repeated build commands
- Change target to
- Refactor code for calculating & collecting metrics
Dependencies Updated
- Update
typescript
to3.9.5
- Update
mocha
from7.2.0 => 8.0.1
- Update
boom
dependency since v7 was deprecated - Various linting dependencies updated
- Various typing files updated
v1.0.0-beta
Changelog
Base PayID
Public API (Version 1.0
)
- Added
application/payid+json
Header - Changed
PaymentInformation
to return address information in anaddresses
array (BREAKING) - Added mandatory request version header
PayID-Version: x.y
(BREAKING)
Private API (Version 2020-05-28
)
- Changed
snake_case
in request bodies tocamelCase
(BREAKING) - Added mandatory request version header
PayID-API-Version: yyyy-mm-dd
(BREAKING)
Extensions & Travel Rule
- Changed
receipts
endpoint topayment-proofs
(BREAKING) - Changed
Receipt
type toPaymentProof
(BREAKING) - Removed
nonce
(BREAKING) - Changed
invoice
endpoint topayment-setup-details
(BREAKING) - Changed
Invoice
type toPaymentSetupDetails
(BREAKING) - Added
txId
toPaymentSetupDetails
andPaymentProof
- Added optional
memo
field toPaymentProof
- Added optional
memo
field toPaymentInformation