@vulog/aima-user
Version:
User management — profiles, personal information, labels, billing groups, and service registration.
472 lines (324 loc) • 14.7 kB
Markdown
# @vulog/aima-user
User management — profiles, personal information, labels, billing groups, and service registration.
## Installation
```sh
npm install @vulog/aima-user @vulog/aima-client @vulog/aima-core @vulog/aima-config
```
## Usage
```ts
import { getUserById, createUser, findUser, getUsers } from '@vulog/aima-user';
import { getClient } from '@vulog/aima-client';
const client = getClient({ ... });
const user = await getUserById(client, 'user-uuid');
const results = await findUser(client, 'email', 'jane@example.com', ['PERSONAL']);
```
## API Reference
### acceptTAndC
```ts
acceptTAndC(client: Client, userId: string, cityId: string): Promise<void>
```
Accepts terms and conditions for a user in a given city.
| Param | Type | Description |
| -------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
| `cityId` | `string` | City identifier |
### assignBillingGroup
```ts
assignBillingGroup(client: Client, entityId: string, billingGroupId: string): Promise<void>
```
Assigns an entity to a billing group.
| Param | Type | Description |
| ---------------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `entityId` | `string` | Entity identifier |
| `billingGroupId` | `string` | Billing group identifier |
### unassignBillingGroup
```ts
unassignBillingGroup(client: Client, entityId: string, billingGroupId: string): Promise<void>
```
Removes an entity from a billing group.
| Param | Type | Description |
| ---------------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `entityId` | `string` | Entity identifier |
| `billingGroupId` | `string` | Billing group identifier |
### createBusinessProfile
```ts
createBusinessProfile(client: Client, userId: string, businessId: string, data: { emailConsent: boolean; email: string; requestId: string; costCenterId?: string }): Promise<UserProfile>
```
**@deprecated.** Creates a business profile for a user.
| Param | Type | Description |
| ------------ | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
| `businessId` | `string` | Business identifier |
| `data` | `object` | Profile creation data |
### createUser
```ts
createUser(client: Client, user: CreateUser, option?: CreateUserOptions): Promise<User>
```
Creates a new user account.
| Param | Type | Description |
| -------- | ------------------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `user` | `CreateUser` | User creation data |
| `option` | `CreateUserOptions` | Creation options |
### findUser
```ts
findUser(client: Client, searchType: 'email' | 'username' | 'phoneNumber', searchQuery: string, types: PersonalInformationUserType[]): Promise<ResponseFind>
```
Searches for users by email, username, or phone number.
| Param | Type | Description |
| ------------- | ---------------------------------------- | ------------------------------ |
| `client` | `Client` | Authenticated AIMA client |
| `searchType` | `'email' \| 'username' \| 'phoneNumber'` | Search field |
| `searchQuery` | `string` | Value to search for |
| `types` | `PersonalInformationUserType[]` | Personal info types to include |
### getProfilePersonalInfoById
```ts
getProfilePersonalInfoById(client: Client, userId: string, profileId: string, types: PersonalInformationProfileType[]): Promise<PersonalInformationProfile>
```
Returns personal information for a user profile.
| Param | Type | Description |
| ----------- | ---------------------------------- | ------------------------------ |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
| `profileId` | `string` | Profile identifier |
| `types` | `PersonalInformationProfileType[]` | Personal info types to include |
### getRegistrationOverview
```ts
getRegistrationOverview(client: Client, userId: string): Promise<UserServiceRegistration>
```
Returns the service registration overview for a single user.
| Param | Type | Description |
| -------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
### getUserById
```ts
getUserById(client: Client, id: string, addAccountStatus?: boolean): Promise<User>
```
Fetches a user by ID. Pass `addAccountStatus: true` to fetch extra account status data.
| Param | Type | Description |
| ------------------ | --------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `id` | `string` | User identifier |
| `addAccountStatus` | `boolean` | Include account status |
### getUserByEmail
```ts
getUserByEmail(client: Client, email: string): Promise<User>
```
Fetches a user by email address.
| Param | Type | Description |
| -------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `email` | `string` | User email address |
### getUserPersonalInfoById
```ts
getUserPersonalInfoById(client: Client, id: string, types: PersonalInformationUserType[]): Promise<PersonalInformationUser>
```
Returns personal information for a user.
| Param | Type | Description |
| -------- | ------------------------------- | ------------------------------ |
| `client` | `Client` | Authenticated AIMA client |
| `id` | `string` | User identifier |
| `types` | `PersonalInformationUserType[]` | Personal info types to include |
### getUsersPIByIds
```ts
getUsersPIByIds(client: Client, ids: string[], types: PersonalInformationUserType[]): Promise<PersonalInformationUser[]>
```
Batch-fetches personal information for multiple users.
| Param | Type | Description |
| -------- | ------------------------------- | ------------------------------ |
| `client` | `Client` | Authenticated AIMA client |
| `ids` | `string[]` | User identifiers |
| `types` | `PersonalInformationUserType[]` | Personal info types to include |
### getLabelsForUser
```ts
getLabelsForUser(client: Client, userId: string): Promise<Label[]>
```
Returns all labels assigned to a user.
| Param | Type | Description |
| -------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
### addLabelForUser
```ts
addLabelForUser(client: Client, userId: string, labelId: number): Promise<void>
```
Assigns a label to a user.
| Param | Type | Description |
| --------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
| `labelId` | `number` | Label identifier |
### removeLabelForUser
```ts
removeLabelForUser(client: Client, userId: string, labelId: number): Promise<void>
```
Removes a label from a user.
| Param | Type | Description |
| --------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
| `labelId` | `number` | Label identifier |
### setServicesStatus
```ts
setServicesStatus(client: Client, profileId: string, servicesUpdate: ServicesUpdate): Promise<void>
```
Updates service statuses for a profile.
| Param | Type | Description |
| ---------------- | ---------------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `profileId` | `string` | Profile identifier |
| `servicesUpdate` | `ServicesUpdate` | Service status changes |
### registerUserToService
```ts
registerUserToService(client: Client, entityId: string, serviceId: string): Promise<void>
```
Registers an entity to a service. Required for private services; optional for public ones.
| Param | Type | Description |
| ----------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `entityId` | `string` | Entity identifier |
| `serviceId` | `string` | Service identifier |
### updateProfilePersonalInfo
```ts
updateProfilePersonalInfo(client: Client, userId: string, profileId: string, actions: PatchAction<ProfilePaths>[]): Promise<void>
```
Updates profile personal information using JSON Patch format.
| Param | Type | Description |
| ----------- | ----------------------------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
| `profileId` | `string` | Profile identifier |
| `actions` | `PatchAction<ProfilePaths>[]` | JSON Patch operations |
### updateUser
```ts
updateUser(client: Client, id: string, user: UserUpdateBody): Promise<User>
```
Updates user account fields. Accepted fields: `locale`, `accountStatus`, `dataPrivacyConsent`, `marketingConsent`, `surveyConsent`, `shareDataConsent`, `profilingConsent`, `membershipNumber`.
| Param | Type | Description |
| -------- | ---------------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `id` | `string` | User identifier |
| `user` | `UserUpdateBody` | Fields to update |
### updateUserPersonalInfo
```ts
updateUserPersonalInfo(client: Client, userId: string, actions: PatchAction<UserPaths>[]): Promise<void>
```
Updates user personal information via JSON Patch on `/phoneNumber`, `/email`, or `/idNumber`.
| Param | Type | Description |
| --------- | ------------------------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userId` | `string` | User identifier |
| `actions` | `PatchAction<UserPaths>[]`| JSON Patch operations |
### getEntity
```ts
getEntity(client: Client, entityId: string): Promise<Entity>
```
Returns a user entity by ID.
| Param | Type | Description |
| ---------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `entityId` | `string` | Entity identifier |
### getFleetBillingGroups
```ts
getFleetBillingGroups(client: Client, options?: PaginableOptions): Promise<PaginableResponse<BillingGroup>>
```
Returns paginated billing groups for the fleet.
| Param | Type | Description |
| --------- | ----------------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `options` | `PaginableOptions`| Pagination options |
### getUsersByIds
```ts
getUsersByIds(client: Client, ids: string[]): Promise<User[]>
```
Batch-fetches users by their IDs.
| Param | Type | Description |
| -------- | ---------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `ids` | `string[]` | User identifiers |
### getUsers
```ts
getUsers(client: Client, options?: PaginableOptions<UserFilters, UserSort>): Promise<PaginableResponse<UserStatus>>
```
Returns a paginated list of users with optional filters and sort.
| Param | Type | Description |
| --------- | ----------------------------------------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `options` | `PaginableOptions<UserFilters, UserSort>` | Pagination, filters, sort |
### getServiceRegistrationOverview
```ts
getServiceRegistrationOverview(client: Client, userIds: string[]): Promise<UserServiceRegistrationOverview[]>
```
Batch-fetches service registration status for multiple users.
| Param | Type | Description |
| --------- | ---------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `userIds` | `string[]` | User identifiers |
### requestServiceRegistration
```ts
requestServiceRegistration(client: Client, profileId: string, serviceId: string): Promise<string>
```
Requests service registration for a profile. Returns the registration request ID.
| Param | Type | Description |
| ----------- | -------- | ------------------------- |
| `client` | `Client` | Authenticated AIMA client |
| `profileId` | `string` | Profile identifier |
| `serviceId` | `string` | Service identifier |
## Types
### User
Key fields: `fleetId`, `id`, `registrationDate`, `agreements[]`, `profiles[]`, `dataPrivacyConsent`, `marketingConsent`.
### BillingGroup
```ts
{
id: string;
fleetId: string;
name: string;
discount: number;
overMileageCap: number;
overMileageRate: number;
}
```
### ServicesUpdate
```ts
{
disableEmailNotification: boolean;
operatorProfileId: string;
actions: {
reasonForChange: string;
serviceId: string;
status: string;
}[];
}
```
### Other exported types
`UserProfile`, `Entity`, `Label`, `PersonalInformationUser`, `PersonalInformationProfile`, `UserServiceRegistration`, `UserServiceRegistrationOverview`, `UserFilters`, `UserSort`, `UserStatus`, `ResponseFind`, `CreateUser`, `CreateUserOptions`, `UserUpdateBody`.