2024-03-15

This release is focused on stability and documentation.

2023-09-22

This release is focused on combining flexibility with robustness in the authentication workflow ... and dark mode!

2022-09-16

This release is focused on simplifying integration with your application code. It also lays the ground work for integration with third-party services such as Zappier later on.

  • Until now all API endpoints ended with a / character. We have reworked the URLs to remove the trailing / in order to match what major API providers do. It also integrates better with React and Angular framework. breaking API calls

  • Formalized structure of event notifications. Profiles listed in an event contain all the fields for that profile, including nick_name. new feature

  • Localization of date and money in notifications e-mail templates. new feature

  • A search can be restricted to specific fields. All search fields can also be used to order the results returned.

  • Adds API endpoints to list of engaged subscribers and list of inactive subscribers. new feature

  • Adds API endpoints to retrieve a profile public information. new feature

  • Uses both {profile} and {charge} in the API endpoints working with charges: Retrieves a processor charge, Re-sends a charge receipt, Refunds a processor charge. breaking API calls

  • Tightens APIs returning personal information, and replaces slug references by dictionnary of public information useful to render HTML pages. breaking API calls

      • GET /api/accounts
      • GET /api/accounts/profiles
      • GET /api/metrics/{profile}/lifetimevalue

      Removes full_name field. You should use printable_name instead.

      • GET /api/accounts/users
      • GET /api/metrics/registered
      • GET /api/profile/{organization}/roles
      • GET /api/profile/{organization}/roles/{role}
      • GET /api/users

      Removes created_at, email and credentials fields for users.

      • GET /api/users/{user}/accessibles
      • POST /api/users/{user}/accessibles
      • PUT /api/users/{user}/accessibles/accept/{verification_key}
      • GET /api/users/{user}/accessibles/{role}
      • POST /api/users/{user}/accessibles/{role}/{organization}

      Replaces organization field by profile. Removes organization.full_name field. You should use profile.printable_name instead.

      • GET /api/metrics/{organization}/active
      • GET /api/metrics/{organization}/churned
      • GET /api/profile/{organization}/plans/{plan}/subscriptions
      • GET /api/profile/{organization}/plans/{plan}/subscriptions/{subscriber}
      • POST /api/profile/{organization}/subscribers/accept/{request_key}
      • GET /api/profile/{organization}/subscriptions
      • GET /api/profile/{organization}/subscriptions/{subscribed_plan}
      • PUT /api/profile/{organization}/subscriptions/{subscribed_plan}

      Replaces the subscription.organization by subscription.profile, also personal information (email, phone, street_address) are not returned anymore, only slug, printable_name, picture, type, credentials.

      Removes detailed information on the plan field; only provides slug and title.

      • GET /api/profile/{organization}/subscribers

      Personal information (email, phone, street_address) are not returned anymore, only slug, printable_name, picture, type, credentials.

      • GET /api/billing/{organization}/checkout

      Replaces the subscription.organization by subscription.profile, also personal information (email, phone, street_address) are not returned anymore, only slug, printable_name, picture, type, credentials.

      Removes detailed information on the plan field; only provides slug and title.

      Replaces the lines[].orig_organization field (a single slug) by orig_profile as a dictionnary of slug, printable_name, picture, type, credentials. Similarly lines[].dest_organization is replaced by dest_profile.

      • GET /api/billing/transactions
      • GET /api/billing/{organization}/history
      • GET /api/billing/{organization}/receivables
      • GET /api/billing/{organization}/transfers

      Replaces the subscription.organization by subscription.profile, also personal information (email, phone, street_address) are not returned anymore, only slug, printable_name, picture, type, credentials.

      • POST /api/profile/{organization}/plans/{plan}/subscriptions

      Replaces the organization by profile field.

      • POST /api/auth/register

      Adds a nick_name field.

      • GET /api/billing/{organization}/coupons
      • POST /api/billing/{organization}/coupons
      • GET /api/billing/{organization}/coupons/{coupon}
      • PUT /api/billing/{organization}/coupons/{coupon}

      Replaces the plan field (a single slug) by a dictionnary of slug and title fields.

      • POST /api/cart

      Adds user field as a dictionnary with username, slug, printable_name and picture.

      Replaces the plan field (a single slug) by a dictionnary of slug and title fields.

      • GET /api/metrics/{organization}/coupons/{coupon}

      Removes created_at, email and credentials fields for users.

      Replaces the plan field (a single slug) by a dictionnary of slug and title fields.

      • GET /api/contacts/{user}/activities

      Replaces the single slug created_by field by a dictionnary of username, slug, printable_name, picture, type, credentials.

      Replaces the single slug account field by a dictionnary of slug, printable_name, picture, type, credentials. Similarly lines[].dest_organization is replaced by dest_profile.

2021-10-05

  • edits Jinja2 templates directly on the page in wysiwyg mode new feature theme
  • customizes pagination links with HTML/CSS (see _pagination.html) new feature theme
  • All i18n translation can now be specified server-side in HTML theme pages theme
  • enables broker profile manager to update global role types new feature
  • uses browser default lang only if not override in registration field

2021-03-25

  • adds registration and login with phone number new feature
    Login profiles do not require an e-mail address anymore, but either an e-mail or phone number must to be present. Notfications are still send through e-mails when one is present in the profile.
  • adds preferred communication language (lang) is user profile API new feature
    The application can typically deduce a preferred communication language through the HTTP headers sent by the browser when a user is interacting with the application (aka on-session). Renewals and expiration notifications are done off-session. At that time, the system uses the preferred communication language stored in the user profile.
  • uses Strong Customer Authentication (SCA) flows in EU region new feature
  • adds balance due in checkout page
    With the introduction of SCA as well as more complex billing workflows, past dues are best presented on the checkout page, rather than inconsistently accross the application workflows.
  • adds "remove from Cart" to all items on checkout page theme
  • translates descriptionbased on preferred language in transactions history API.
  • fixes re-ordering of rules on the Access Rules Page theme

2020-06-08

  • Replace advance_discount by advance_discounts in plans API. new feature breaking API calls
    Previously the API tried to infer discounts for advance payments based of a single percentage. It was neither intuitive to use no created the expected discounts.
    A provider can now explicitely specify discounts for advance payments as either a percentage, currency or period amount, as well as the length of period covered by the discount.
  • Adds the ability to specify a currency amount instead of a percentage for one-time discount coupons. new feature breaking API calls
    The field percent has been replaced by discount_type and discount_value in coupons API.
  • Added an API to retrieve plans shown in pricing page. new api
  • Adds skip_optin_on_grant and implicit_create_on_none fields to specify behavior of roles when inviting a user.
  • Consistently use detail to return user-friendly messages. Previously some APIs returned details while others would return detail. breaking API calls
  • API to generate a rules key to communicate with the micro-service behind the firewall has been changed from PUT to POST for consistency. breaking API calls

2020-03-07

  • Workflow to create user accounts and connect them to a profile. new feature
    When you are serving big organizations where registered users need to connect to a single organization profile, it is many times unknown to a new user that a profile for her organization already exists. Furthermore, there might be pending invites for her e-mail address, a user is unaware of when she attempts to register.
    The /activate/ page takes users through the login or register workflow based on their e-mail address.
  • Support for Cross-Origin Resource Sharing (CORS) for teams that have Web frontend and API backend teams deploying on different HTTP domains. new feature
  • Detailed dashboard for engagement tags. new feature
  • Added API to retrieve user from an activation key, and activate new user accounts. new api
  • Added API to confirm a password reset. new api
  • Added API to send a contact us request. new api
  • You work hard to prevent errors. We do the same. Inevitably though a glitch will occur. We have redesigned the 40x and 50x error pages to help users recover and move forward. theme
  • Many business owners and users are mobile-first if not mobile-only. We have redesigned the pages to grant roles and invite co-workers with inline forms instead of dialog popups. theme
  • We are committed to support a growing international community of developpers and users. We updated the French locale this time around. If you are interested to improve translations or are interested to provide locale for different languages, please get in touch with us. Thank you. theme
  • All authenticated users can now search for users and profiles through /api/accounts. The API is used to implement typeahead dropdowns. change default in permissions
  • Both subscribers and providers can call GET on /api/billing/{profile}/balance/. change default in permissions
  • Amounts and descriptions for invoice items in checkout pages no longer require to be a specific column index. They must though be decorated with classes .line-amount and .line-descr now (commit d99974a5). breaks older themes
  • APIs creating JSON Web Tokens (/api/auth) return 201 CREATED instead of 200 OK alongside the token payload. breaking API calls
  • Previously various APIs were using fields named balance or balance_amount to specify a balance. All APIs dealing with balances now use balance_amount (commit 2cecfeb4). breaking API calls

As always the complete code base is available as Open Source.