Skip to content
This repository has been archived by the owner on Mar 8, 2024. It is now read-only.

Releases: PayString/paystring

v1.4.0

28 Aug 19:15
bfdc4d9
Compare
Choose a tag to compare

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:
// 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 has verifiedAddresses. Allowing this behavior would invalidate the signatures used to verify the previously stored verifiedAddresses.

Project Internals

  • Refactored some shared logic across POST and PUT
  • Extending tests to guarantee the Admin API works across versions

v1.3.0

18 Aug 22:30
e728587
Compare
Choose a tag to compare

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
  • 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 a PayID-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

v1.2.0

04 Aug 21:36
eea16ca
Compare
Choose a tag to compare

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
  • 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 to FiatAddressDetails

v1.1.0

16 Jul 21:59
Compare
Choose a tag to compare

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.
  • 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.
  • 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.
  • 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

09 Jul 18:55
b2a8fbd
Compare
Choose a tag to compare

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

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

18 Jun 13:03
1.0.0
Compare
Choose a tag to compare

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.
  • Updated the Dockerfile to use a non-root user.

Documentation

  • Added documentation for version headers
  • Clean up some existing documentation
  • 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
  • Refactor code for calculating & collecting metrics

Dependencies Updated

  • Update typescript to 3.9.5
  • Update mocha from 7.2.0 => 8.0.1
  • Update boom dependency since v7 was deprecated
  • Various linting dependencies updated
  • Various typing files updated

v1.0.0-beta

18 Jun 13:00
1.0.0-beta
Compare
Choose a tag to compare
v1.0.0-beta Pre-release
Pre-release

Changelog

Base PayID

Public API (Version 1.0)

  • Added application/payid+json Header
  • Changed PaymentInformation to return address information in an addresses array (BREAKING)
  • Added mandatory request version header PayID-Version: x.y (BREAKING)

Private API (Version 2020-05-28)

  • Changed snake_case in request bodies to camelCase (BREAKING)
  • Added mandatory request version header PayID-API-Version: yyyy-mm-dd (BREAKING)

Extensions & Travel Rule

  • Changed receipts endpoint to payment-proofs(BREAKING)
  • Changed Receipt type to PaymentProof (BREAKING)
  • Removed nonce (BREAKING)
  • Changed invoice endpoint to payment-setup-details (BREAKING)
  • Changed Invoice type to PaymentSetupDetails (BREAKING)
  • Added txId to PaymentSetupDetails and PaymentProof
  • Added optional memo field to PaymentProof
  • Added optional memo field to PaymentInformation

v0.1.0

18 Jun 12:55
0.1.0
Compare
Choose a tag to compare
v0.1.0 Pre-release
Pre-release

The initial release of PayID