Explore Release Notes

Release version 4.24.0 (October, 2024)

31. 10. 2024

Pre-deployment steps

To be done before deployment
Review API Changes to check if there are no breakable changes in the consumed API

Post-deployment steps

To be done after deployment
Nothing in the current release

New functionality

Feature

Description

Benefits

The ability for the service user to create a new service role with the specified existing permissions

A service user with appropriate permission is able to create a new service role with the specified:

  • role name

  • role description

  • list of existing permissions

  • list of roles that users with new role can create

  • list of roles to be able to create users with new role

so that these roles can create users with the created role and users with the created role can access the platform and functionality defined by the specified permissions.

After the role is created service users can create multiple users in this new role.

It provides the ability to configure different service roles with a set of permissions and create users with these roles to meet the needs of the business as much as possible.

The ability to specify the date from which the new contract will be applied to the user after the contract change and the ability to change contracts for clients in bulk were added

Service users can provide a new contract begin date when changing the contract for the client (for a single client or in bulk). A new contract will be applied to the client when the date is reached. Until the start date for a new contract, the client will use the existing contract.

If a new contract begin date is not provided – a new contract will be applied immediately.

Every time a service user sets a contract change the old settings, if it exists, will be overwrited.

Contracts can be changed in bulk only if all selected users have exactly the same contract.

Allows service users to schedule contract changes for clients in advance.

The ability for a service user to change role for another existing service user was added

Service users can change roles for another existing service user (except cashier), so that this service user will have access to the functionality according to permissions from the new role.

Roles to be able to change roles:

  • Administrator

  • CEO

The roles of existing service users can be changed only within the bounds of one organization.

Now you can change roles for existing team members and give them access to the corresponding back-office features

The ability for user with service roles to change permissions for other existing service roles except administrator was added

Service user with appropriate permission can:

  • change permissions for other existing service roles (add/remove)

  • change list of roles which users can be created by the changed role

  • change list of roles users which users can create users with changed roles

so that users in the changed roles have access to functionality according to the new permissions after re-login.

Any role can not change permissions for the administrator role.

Now you can change permissions for any roles (except Administrator) for existing team members via UI and API and give them access to the corresponding back-office features

The ability to display back-office functionality for service users depends on the permissions implemented

Now display functionality for service users on UI depends on the permissions instead of roles, so if permissions for a role were changed functionality is displayed according to the new permissions with the next login.

Allows more flexible configuration of feature availability for service users

New default roles were added to the system configuration

The following service roles (team members) are available in the system configuration and will be created when the system starts:

Customer Help team

  • Customer Success specialist

*corresponding two old roles: Customer_support, Customer_support_manager

Scam-prevention team

  • KYC specialist

*corresponding three old roles Compliance_specialist, Head_of_compliance, Compliance_manager

  • AML specialist

  • Anti-fraud specialist

Finance team

  • CFO – Chief Financial Officer

  • Financial specialist

  • Accountant

  • Cashier

Revenue team

  • CRO – Chief Revenue Officer

  • Revenue specialist

  • Revenue analyst

Administrative team

  • Role – administrator

  • Administrator

  • CEO

All default service roles (including Customer Success specialist) are linked to the organization with type “System“.

Except for the Cashier role – it is linked to “Cash desk” organization.

In the current release old default roles that are mentioned as “corresponding” to new ones will be available too.

But if your business is using these roles you need to switch to new, relevant roles to be able to use the back-office features to their full advantage.

The following old roles will be deleted in future releases:

  • Customer_support

  • Customer_support_manager

  • Compliance_specialist

  • Head_of_compliance

  • Compliance_manager

Also new business role was added as default:

  • Corporate

Corporate is linked to an organization with the type “Corporate”

The system creates all listed roles with the set of appropriate permissions granted to each role by default.

So that the service user can create users with these roles (more than one) and all of them will be able to perform actions according to permissions.

The system has a pre-configured wide range of service roles that can be used immediately after system startup, to cover different business scenarios and allow to meet the business demands better.

The ability for a business user to withdraw from a wallet via the cash desk without double confirmation by the Accountant was added

Business user can withdraw from wallets via the cash desk without double accountant’s confirmation (only Cashier confirmation is required).

The feature is available via API only, UI will be provided in the following releases.

Use APIs to perform withdraw via the cash desk without double accountant’s confirmation only with Cashier confirmation:

  1. POST ​/v1​/cash-desk-withdrawals​/{cashDeskId} – to create request by Business user

  2. POST /business-requests/{requestIdentifier}/approve – to perform withdrawal by Cashier

Flow with Accountant confirmation is also available by using a separate set of APIs:

  1. POST ​/v1​/cash-desk-withdrawals​/{cashDeskId} – to create request by Business user

  2. POST /v1​/business-requests​/{requestIdentifier}​/approve – to approve request by Accountant

  3. POST ​/v1​/cash-desk-withdrawals​/{requestIdentifier}​/perform-withdrawal – to perform withdrawal by Cashier

Improving the overall user experience

The ability to specify and manage trusted domains was added

Service users are able to specify and manage domain names with which team members are allowed to register their emails as contacts for login into the system (trusted domains).

In the current release service user can manage trusted domain names:

  • add

  • view

  • delete

Ability to control under which e-mail team members will get access to the system. Allows to avoid using personal email as a login to the application, only corporate emails.

Validation of the team member’s emails by the trusted domains list was added

To activate trusted domains validation property core.validation.trusted-domains.enabled was added to the system configuration level (false by default).

Validation of the provided user email for login credential purposes has been applied to APIs:

  • POST /v1/users – create a user with a specified role in a specified organization

  • PATCH /v1/profiles/{userId}/contact – Update and verify contact without confirmation (by system user role)

  • POST /v1/profiles/my/contact – Create contact verification request (by user itself)

Email validation fails when:

  • core.validation.trusted-domains.enabled=true

  • user is an active member of SYSTEM organization (or going to be created with SYSTEM organization membership)

  • login credential type = email

  • domain from user email doesn’t belong to the trusted domains list

Improvements

Feature

Description

Selfie was added as required for KYC document type by default in the system configuration for the pre-prod instance

Filter by currency was added to “Contract – Vendor – Operations” list form UI

Filter by main currency was added to POST ​/v1​/currencies​/view

The ability to provide nationality, tax residence country and tax number in user profile was added

Business user can provide nationality, tax residence country, and tax number in his profile, view and modify it

  • nationality – user nationality, by meaning of the country that issued the passport (or other ID document used for user verification)

  • tax residence country – country of user tax residence

  • tax number – tax identification number

Service user with appropriate permission also can modify these parameters in a business user profile.

Note: nationality field is optional when creating profile but it is required for Individual when personal info will be updated (by Business or Service user)

The ability for service user to unban banned user on UI was added

Additional parameters were added to the view of the list of system accounts (with filter and pagination)

Service user can view the following parameters for the list of system accounts (accounts of all organizations, except Individual and Merchant organizations) with filter and pagination:

  • Vendor name

  • Account name

  • Account type

  • Currency

  • Collector (available only for regular_gate_commission and business_gate_commission wallets)

  • Balance

  • Serial number

Available Filters:

  • Organization types (except Individual and Merchant)

  • Vendor name

  • Account type

  • Currency

  • Collector (available only for regular_gate_commission and business_gate_commission wallets)

  • Search by Serial number

API to get list of all permissions and for the specified role was added

API accepts role (no matter service or business) and returns list of permissions for the provided role.

If role is not provided, API shall return list of all permissions.

The ability for service user to get the list of existing roles was added

Service user with appropriate permission can get list of existing roles with number of users created in the roles

The ability for service users to delete other service roles without users linked to this role except administrator was added

Service users can delete another service role except for administrator if no users are linked to the deleted role.

The ability for service user to activate/deactivate other service roles except administrator was added

The service user can deactivate/activate another service role except administrator so that deactivated role can’t be assigned to the user.

The ability to view the list of roles who can create the current role and who can be created by the current role was added

Service user can see the following for the provided service role:

  • list of roles which users can be created by the provided role

  • list of roles that users can create users with the provided role

The ability to see provider commissions on the Contract forms was added on the UI

Service user can view Vendor commission (active for the current period) on the “Contracts/[Contract name]/[Vendor name]/[Operation name]/Commissions and limits” form (on view, create and edit forms)

Change mail service configuration does not perform SMTP health check when LOG or AmazonSES providers are selected

The issue if LOG is selected and health checks are not completed – app can not launch was fixed.

Mail service configuration was changed to does not perform SMTP health check when LOG or AmazonSES providers are selected

The structure of POST /transactions/view API response was enhanced

See API Changes to know more.

Filter by roleType with possible value service or business was added to API POST /v1​/users​/view filters.

See API Changes to know more.

API was switched to the “Team member profile details” form of the Back-office

Service user with appropriate permission can view the following information about team members:

  • Team member name

  • Phone number

  • Address information

  • Profile status

  • Role

  • Team member ID

  • Photo (View team member photo sidebar)

Also service user can:

  • Reset the team member’s password

  • Deactivate member via Back-office UI.

The ability to see all service roles when creating service user via UI was added

Service user with appropriate permission can select all available service roles (including custom roles), users with which he can create when creating team via Back-office UI.

The ability to duplicate the existing contract with all commissions and limits (optionally) was added

Service user with appropriate permission can specify whether or not to copy commissions and limits from existing contract.

User can copy limits only together with commissions.

System refactoring was done: when client wallet is created, the system creates system_commission wallet in the same currency as the client wallet

Operation processing accounting refactoring was done to eliminate the optimistic lock at the commission wallets.

Contact us to get more information about the changes in the accounting model for different operations and new wallet types.

System refactoring was done: for operation processing the system uses system_commission wallet at the business user level instead of the system level

System refactoring was done: when a commission wallet at the business user level is not found for operation processing, the system creates a wallet and processes the operation

Process to sum balances at the system_commission wallets at the business users level and update balance at the system_commission wallets at the system level was implemented

Fixes

  • Pagination was added on the “Asset details” page of the Back-office UI
  • Issue with the “View transaction details” link was fixed in case reconciliation was performed using device order ID
  • The issue with reconciliation statuses for transactions was fixed
  • The issue with reconciliation statuses for transactions was fixed
  • The reconciliation statuses for transactions were added
  • Legacy commission profile artifacts were removed from the code
  • Displaying of amounts in the Individual UI according to currency fraction and scale was fixed
  • The issue with scrolling the left sidebar with the menu position was fixed
  • Multiple issuers with button components were fixed (margin, stroke)
  • The issue with the ability to copy information was fixed
  • The issue with ‘Allowed to create new roles’ toggle was fixed
  • Role name displaying was fixed
  • Vue-query error when trying to refresh the “Member details” page was fixed
  • Permissions to view “Change role” and “Delete role” buttons were fixed
  • Alerts were changed appropriate to the design
  • The issue with pagination in the POST /role-groups/aggregation/view was fixed
  • The issue with removing a batch of roles when updating user permissions was fixed

API changes

Endpoint
Updated
PUT /v1/management/organization-settings/{organizationTypeCode}/roles/{roleName}
API endpoint was changed to update the permissions and creation methods of an existing role in the system based on the organization type and role name.

Required Permissions: ORGANIZATION_SETTINGS_MANAGER Request body parameters:
  • permissions: An array of new permissions to be assigned to the role.
  • removePermissions: An array of permissions that should be removed from the role.
  • memberCreations: An array of methods for adding users to an organization. This value will replace the existing. Available values: CREATE_NEW_ORGANIZATION, ATTACH_SINGLE, ATTACH_MULTIPLE
request body:
{
  "memberCreations": [
    "CREATE_NEW_ORGANIZATION"
  ],
  "permissions": [
    "string"
  ],
  "removePermissions": [
    "string"
  ]
}
 response body:
{
  "settings": [
    {
      "role": {
        "code": "customer_support"
      },
      "permissions": [
        "string"
      ],
      "organizationType": "individual",
      "creationMethods": [
        "CREATE_NEW_ORGANIZATION"
      ],
      "rolesUnderManagement": [
        {
          "roleCode": "CFO",
          "managementOperation": [
            "CREATE"
          ]
        }
      ],
      "manageableRoles": [
        {
          "roleCode": "CFO",
          "managementOperation": [
            "CREATE"
          ]
        }
      ],
      "selfRegistrationAllowed": true,
      "userManagementAllowed": true
    }
  ]
}
POST /v1​/role-groups-is-able-to-create
New new parameters isCreatableBy and isAbleToManageRoles was added to response of API to get list of roles in which users can be created by the provided role.
Permission required: ROLE_GROUPS_IS_ABLE_TO_CREATE_VIEWER
request:
{
  "roles": [
    "customer_support"
  ],
  "roleType": "service",
  "isActive": true
}

response:

{
  "records": [
    {
      "role": "individual",
      "isSelfRegistrationAllowed": true,
      "creationMethods": [
        "CREATE_NEW_ORGANIZATION"
      ],
      "hasUserManagerPermission": true,
      "userManagementAllowed": true,
      "isAbleToCreateRoles": [
        "individual"
      ],
      "isAbleToManageRoles": [
        "individual"
      ],
      "isCreatableBy": [
        "administrator"
      ]
    }
  ]
}
POST /v1​/currencies​/view
Filter by isMain was added to APIrequest
Permission required: CURRENCY_VIEWER
request:
{
  "pageNumber": 0,
  "pageSize": 10,
  "filter": {
    "names": [
      "US Dollar"
    ],
    "activationStatus": "active",
    "text": "$",
    "main": false
  },
  "sort": {
    "active": "asc",
    "name": "asc"
  }
}
response:
{
  "pageNumber": 0,
  "pageSize": 10,
  "totalPages": 1,
  "totalRecords": 10,
  "records": [
    {
      "id": "string",
      "code": "USD",
      "digitalCode": "926",
      "symbol": "£",
      "name": "British Pound Sterling",
      "description": "British Pound Sterling",
      "fraction": 100,
      "scale": 2,
      "snPrefix": "GBP",
      "active": true,
      "isMain": true,
      "availableForExchange": true
    }
  ]
}
PATCH profiles/my/person
PATCH profiles/{userId}/person
The following fields were added to the request and response:
  • person.nationality - country code in ISO 3166-1 alpha-2 format, required for Individual users only. Note: field nationality will be required while updating Individual user person information in profile by owner user and service user.
  • person.taxResidenceCountry - country code in ISO 3166-1 alpha-2 format, optional
  • person.taxNumber - tax number
request:
{
  "person": {
    "namePlain": {
      "first": "string",
      "last": "string",
      "middle": "string"
    },
    "nameIntl": {
      "first": "string",
      "last": "string",
      "middle": "string"
    },
    "description": "string",
    "phoneNumber": "string",
    "email": "string",
    "dateOfBirth": "2024-10-03T06:13:10.904Z",
    "gender": "male",
    "systemLanguage": "en",
    "nationality": "SK",
    "taxResidenceCountry": "SK",
    "taxNumber": "string"
  }
}
response:
{
  "profile": {
    "person": {
      "nationality": "SK",
      "taxResidenceCountry": "SK",
      "taxNumber": "string"
    },
  ]
}
GET profiles/my
GET profiles/{userId}
The following fields where added to the API response:
  • profile.person.nationality
  • profile.person.taxResidenceCountry
  • profile.person.taxNumber
response:
{
  "profile": {
    "person": {
      "nationality": "SK",
      "taxResidenceCountry": "SK",
      "taxNumber": "string"
    },
  ]
}
POST /transactions/view
API response was changed:
  • added cashCoin node for cash_investment process type
  • removed children node for all processes
POST /v1/business-requests/{requestIdentifier}/approve
POST /v1/business-requests/{requestIdentifier}/decline
POST /v1/cash-desk-withdrawals/{requestIdentifier}/perform-withdrawal
Added optional request body to provide resolution parameters for cash desk withdrawal requests.
type - Business request resolution type
note - Business request resolution note
externallyVerified - Shows that user documents were checked at the cash desk
request:
{
    "type": "cash_desk_redeem",
    "note": "test note",
    "externallyVerified": true
}
response:
{
  "records": [
    {
      "identifier": 12345,
      "status": "pending",
      "businessProcessId": "9ac46353-c9a6-4979-8d2e-a9e6c0dd0419",
      "businessProcessType": "bank_topup",
      "businessProcessStatus": "limited",
      "resolutionData": {
        "note": "string",
        "externallyVerified": true
      }
    }
  ]
}
POST /v1​/users​/view
New filter by roleType was added to request filters.
Possible value service or business.
business - Merchant, Individual, and Corporate roles
service - the rest of the roles
request:
{
  "pageNumber": 0,
  "pageSize": 10,
  "filter": {
    "ids": [
      "cca1fe9b-4e08-450c-840a-49dcefd7b126"
    ],
    "email": "individual@sdkfinance.tech",
    "emailVerified": true,
    "phone": "1111111",
    "phoneVerified": true,
    "text": "individual",
    "banned": false,
    "active": true,
    "roles": [
      "individual"
    ],
    "organizationIds": [
      "61b065de-58ef-4959-ab5e-4a2d75ab6564"
    ],
    "identificationStatus": "approved",
    "cohort": "16W",
    "contractName": "string",
    "investigationStatuses": [
      "open"
    ],
    "profileStatuses": [
      "active"
    ],
    "clientName": "string",
    "roleType": "service"
  },
  "sort": {
    "createdAt": "asc",
    "active": "asc"
  }
}
response:
{
  "pageNumber": 0,
  "pageSize": 10,
  "totalPages": 1,
  "totalRecords": 10,
  "records": [
    {
      "id": "cca1fe9b-4e08-450c-840a-49dcefd7b126",
      "name": "Tony Stark",
      "createdAt": "2021-01-28T18:12:48.985Z",
      "active": true,
      "activeReason": "AML",
      "activeDescription": "string",
      "frozen": true,
      "frozenReason": "AML",
      "frozenDescription": "string",
      "banned": false,
      "defaultUser": false,
      "banExpiryDate": "2025-01-01T07:15:50.555Z",
      "contact": {
        "phoneNumber": "",
        "phoneVerified": true,
        "additionalPhoneNumber": "string",
        "additionalPhoneVerified": false,
        "email": "string",
        "emailVerified": true,
        "countryCode": "SK"
      },
      "members": [
        {
          "id": "7653779a-8c14-4932-b536-1075e97041f5",
          "role": "individual",
          "organization": {
            "id": "7cf1f309-09cd-4eda-8b2c-682bf64fd7cd",
            "type": "individual",
            "name": "Tony Stark",
            "organizationStatus": "approved",
            "contract_info": {
              "id": "5bc369de-4fee-4d72-b5e5-73769adeec4e",
              "personType": "standart",
              "name": "standard contract for org individual"
            }
          }
        }
      ],
      "cohort": "16W",
      "investigations": [
        {
          "id": "string",
          "investigator": "string",
          "investigationReason": "string",
          "investigationStatus": "open",
          "investigationStartDate": "2024-10-22T13:25:58.615Z",
          "investigationDeadline": "2024-10-22T13:25:58.615Z",
          "investigationEndDate": "2024-10-22T13:25:58.615Z"
        }
      ],
      "profileStatus": "active",
      "lastLogin": "2024-01-28T18:12:48.985Z",
      "lastTransaction": "2024-07-17T14:44:44.444Z",
      "timezone": "+05:30",
      "systemLanguage": "en"
    }
  ]
POST /contracts/{contractId}/copy
API request and response were changed. Added ability to specify whether or not to duplicate commissions and limits from an existing contract.
copyLimits=true allowed only if copyCommissions=true
Where monthlyFee and contractStartDate are non-operative for now, logic for these fields will be added in the next releases.
request:
{
  "name": "My first copy of the contract",
  "organizationType": "individual",
  "personType": "standart",
  "monthlyFee": 100,
  "contractStartDate": "2024-10-21T07:50:57.223Z",
  "copyLimits": true,
  "copyCommissions": true
}
response:
{
  "id": "string",
  "organizationType": "individual",
  "personType": "standart",
  "name": "string",
  "description": "string",
  "active": true,
  "global": true
}
Endpoint
Added
POST /v1/role-groups
Added a new API to create a new service role with the specified existing permissions.
Permission required: SYSTEM_ROLE_INITIATOR
When creating a new role, managementOperation must be specified for roles that will be subordinate to the current role:
  • CREATE - permission to create a role
  • UPDATE - for modification
  • DELETE - for deletion
If at least one of the operations is set, userManagementAllowed must be set to true
request:
{
  "roleCode": "CFO",
  "roleDescription": "Responsible for making decisions for the company for projects and its finances",
  "permissions": [
    "ROLE_VIEWER",
    "USER_MANAGER"
  ],
  "supervisingRoles": [
    {
      "roleCode": "administrator",
      "managementOperation": [
        "CREATE"
      ]
    }
  ],
  "manageableRoles": [
    {
      "roleCode": "cfo",
      "managementOperation": [
        "CREATE",
        "UPDATE"
      ]
    }
  ],
  "userManagementAllowed": true
}
response:
{
  "id": "string",
  "roleCode": "CFO",
  "roleDescription": "Responsible for making decisions for the company for projects and its finances",
  "permissions": [
    "ROLE_VIEWER",
    "USER_MANAGER"
  ],
  "supervisingRoles": [
    {
      "roleCode": "administrator,",
      "managementOperation": [
        "CREATE"
      ]
    }
  ],
  "manageableRoles": [
    {
      "roleCode": "cfo,",
      "managementOperation": [
        "CREATE"
      ]
    }
  ],
  "isSelfRegistrationAllowed": true,
  "userManagementAllowed": true
}
PATCH /v1​/contracts​/{contractId}​/organization
New API to change the contract for the provided organizations was added.
Permission required: ORGANIZATION_CONTRACT_MANAGER
applyMethod - provide IMMEDIATE to change contract for user immediately and SCHEDULED to set contract with date when new contract will be applied, provide date in applyAt
request:
{
  "applyMethod": "IMMEDIATE",
  "applyAt": "2024-09-26T17:33:53.845Z",
  "organizationIds": [
    "df641d2e-9573-45dc-aead-cecdcbb7542b"
  ]
}
response:
{
  "pageNumber": 0,
  "pageSize": 10,
  "totalPages": 1,
  "totalRecords": 10,
  "records": [
    {
      "id": "cca1fe9b-4e08-450c-840a-49dcefd7b126",
      "name": "Tony Stark",
      "createdAt": "2021-01-28T18:12:48.985Z",
      "active": true,
      "banned": false,
      "defaultUser": false,
      "contact": {
        "phoneNumber": "",
        "phoneVerified": true,
        "additionalPhoneNumber": "string",
        "additionalPhoneVerified": false,
        "email": "string",
        "emailVerified": true,
        "countryCode": "SK"
      },
      "members": [
        {
          "id": "7653779a-8c14-4932-b536-1075e97041f5",
          "role": "individual",
          "organization": {
            "id": "7cf1f309-09cd-4eda-8b2c-682bf64fd7cd",
            "type": "individual",
            "name": "Tony Stark",
            "organizationStatus": "approved",
            "contract_info": {
              "id": "5bc369de-4fee-4d72-b5e5-73769adeec4e",
              "personType": "standart",
              "name": "standard contract for org individual"
            }
          }
        }
      ]
    }
  ]
}
GET /v1​/my​/role-groups​/permissions
New API to get list of permissions assigned to the caller role was added.
Permission required: PRIVILEGES_VIEWER
response:
{
  "records": [
    {
      "roleCode": "individual",
      "permissions": [
        "WALLET_OWNER"
      ]
    }
  ]
}
POST /v1​/role-groups​/aggregation​/view
New API to get list of roles with details was added
Permission required: ROLE_VIEWER
request body:
{
  "pageNumber": 0,
  "pageSize": 10,
  "filter": {
    "roleType": "service",
    "roleCode": "cashier",
    "roleDescription": "string",
    "roleStatus": "active"
  },
  "sort": {
    "roleCode": "asc"
  }
}
response body:
{
  "pageNumber": 0,
  "pageSize": 10,
  "totalPages": 1,
  "totalRecords": 10,
  "records": [
    {
      "roleCode": "customer_support",
      "roleType": "service",
      "description": "Role for customer support department",
      "numberOfUsers": 10,
      "status": "ACTIVE|INACTIVE",
      "belongsToSystem": true
    }
  ]
}
PATCH /v1​/role-groups​/{roleCode}​/toggle
New API to change the activation status of the specified role based on the provided parameters was added
Permission required: TOGGLE_ROLE_PERMISSION
The role must have permission to manage other roles. The role being updated must appear in the list of manageable roles of the caller, and the update operation must be permitted for that specific role.
request:
{
  "action": "activate"
}
response: no content
PATCH /v1/members/{id}/role
New API to change organization member roles in the bounds of one organization was added.
Permission required: ROLE_CHANGER
id - member's identifier
request:
{
  "roleCode": "individual"
}
response:
{
    "id": "01923285-c058-7e03-bc10-2f5a50a74a4c",
    "role": "cfo",
    "user": {
        "id": "01923285-c029-7d5c-a760-3374b4078dd4"
    },
    "organization": {
        "id": "01923285-bfbd-7992-a6fa-9b8209dbedb3",
        "type": "individual",
        "name": "",
        "organizationStatus": "none",
        "contract_info": {
            "id": "01922d62-0128-73d8-8d04-d90e4584a4be",
            "personType": "base",
            "name": "base contract for org individual"
        }
    }
}
DELETE /v1​/role-groups​/{roleCode}
New API to delete service roles that have no users linked to them was added. Deletion of the administrator role is not allowed.
Permission required: ROLE_REMOVAL_PRIVILEGE
roleCode - unique role code
To remove another system role, the current role must have both the update permission for that role (manageable link) and the manage permission enabled.
request: No parameters
response: No content
POST /v1​/organizations​/system​/coins
New API to view system accounts with filter and pagination was added.
API returns all wallets according to filters (except client-related wallets such as client, and prepaid).
Permission required: SYSTEM_COIN_VIEWER
request:
{
  "pageNumber": 0,
  "pageSize": 10,
  "filter": {
    "organizationType": "cash_desk",
    "vendorName": "string",
    "vendorId": "string",
    "accountTypes": [
      "client"
    ],
    "currencyIds": [
      "string"
    ],
    "currencyCodes": [
      "string"
    ],
    "collector": "PROVIDER",
    "serials": [
      "string"
    ]
  },
  "sort": {
    "createdAt": "asc"
  }
}
response:
{
  "pageNumber": 0,
  "pageSize": 10,
  "totalPages": 1,
  "totalRecords": 10,
  "records": [
    {
      "serial": "string",
      "vendorName": "string",
      "vendorId": "string",
      "accountName": "string",
      "accountType": "client",
      "currencyId": "string",
      "currencyCode": "string",
      "collector": "string",
      "balance": 0,
      "accounting": true
    }
  ]
}
POST /api/v1/trusted-domain
New API to add new trusted domain in the system was added. Provide the domain name in the domainName request body parameter to allow team members to register in the system by email with that domain.
Permission required: TRUSTED_DOMAIN_MANAGER
To activate team members email validation new property was added to the system configuration core.validation.trusted-domains.enabled (default=false)
When team member inputs email to use it as account credentials validation will fail IF:
  • core.validation.trusted-domains.enabled = true
  • user is an active member of SYSTEM organization (or going to be created with SYSTEM organization membership)
  • login credential type = email
  • domain from user email doesn't belong to the trusted domains list
Validation of user email for login credential purposes has been applied to below APIs:
  • POST /v1/users
  • PATCH /v1/profiles/{userId}/contact
  • POST /v1/profiles/my/contact
IF core.validation.trusted-domains.enabled = false - domain validation for team members emails will not be applied
request
{
  "domainName": "string"
}
response:
{
  "trustedDomain": {
    "id": "string",
    "value": "string",
    "creationDate": "2024-10-10T13:30:22.751Z"
  }
}
GET /api/v1/trusted-domain
New API to get trusted domain list was added.
Permission required: TRUSTED_DOMAIN_VIEWER
response:
{
  "records": [
    {
      "id": "string",
      "value": "string",
      "creationDate": "2024-10-10T13:34:53.272Z"
    }
  ]
}
DELETE /v1​/trusted-domain​/{trustedDomainId}
New API to delete domain from the list of trusted domain was added.
Permission required: TRUSTED_DOMAIN_MANAGER
trustedDomainId - provide trustedDomainId in the request URL to delete from the list. Get trustedDomainId from the GET ​/v1​/trusted-domain or POST /v1​/trusted-domain response
response: No content
PUT /v1​/management​/organization-settings​/service-roles​/{roleCode}
New API to change permissions for other existing service roles was added.
permission required: SERVICE_ROLE_MANAGER
roleCode - Role code. It can be taken from code in the response of API GET /role-groups.
request:
{
  "permissions": [
    "string"
  ],
  "removePermissions": [
    "string"
  ],
  "supervisingRoles": [
    {
      "roleCode": "CFO",
      "managementOperation": [
        "CREATE"
      ]
    }
  ],
  "removeSupervisingRoles": [
    {
      "roleCode": "CFO",
      "managementOperation": [
        "CREATE"
      ]
    }
  ],
  "manageableRoles": [
    {
      "roleCode": "CFO",
      "managementOperation": [
        "CREATE"
      ]
    }
  ],
  "removeManageableRoles": [
    {
      "roleCode": "CFO",
      "managementOperation": [
        "CREATE"
      ]
    }
  ]
}
response:
{
  "settings": [
    {
      "role": {
        "code": "customer_support"
      },
      "permissions": [
        "string"
      ],
      "organizationType": "individual",
      "creationMethods": [
        "CREATE_NEW_ORGANIZATION"
      ],
      "supervisingRoles": [
        {
          "roleCode": "CFO",
          "managementOperation": [
            "CREATE"
          ]
        }
      ],
      "manageableRoles": [
        {
          "roleCode": "CFO",
          "managementOperation": [
            "CREATE"
          ]
        }
      ],
      "selfRegistrationAllowed": true,
      "userManagementAllowed": true
    }
  ]
}
GET /v1​/permissions
API to get list of all existing permissions was added.
response:
{
  "records": [
    "WALLET_OWNER"
  ]
}
Endpoint
Deprecated/Deleted
PATCH /contracts
API was marked as deprecated. deprecated API will be deleted in further releases. Use new PATCH /contracts/{contractId}/organization instead of old.