Skip to main content

User

B2B API provides user actions from the /api/v1/users/ endpoint. It consists of several endpoints and includes endpoints for managing user accounts such as creating, updating profiles and accessing user-specific data.

Users can utilize the Omnitron token to access the B2B system as a superuser.

Create User

Used to create a user within the system. When a user is generated on the B2B platform, the same user is subsequently created on the Commerce platform using the /users/registration endpoint.

Endpoint: POST /api/v1/users/

Example Request

In order to create a new user in the system, a request is sent to the endpoint given above using the header specified below and with the request body parameters:

PropertyData TypeRequiredDescriptions
first_namestringTrueThe first name of the user.
last_namestringTrueThe last name of the user.
emailstringTrueThe email of the user.
passwordstringTrueThe password of the user.
phone_numberstringFalseThe phone number of the user.
divisionintegerTrueThe division id of the user.
curl --location '{host}/api/v1/users/' \
--header 'Authorization: Token {TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{
"division": 1,
"email": "firstname.lastname@akinon.com",
"first_name": "firstname",
"last_name": "lastname",
"phone_number": "05XXXXXXXXX",
"password": "123456"
}'

Example Response (200 OK)

{
"id": 1,
"email": "firstname.lastname@akinon.com",
"first_name": "firstname",
"last_name": "lastname",
"phone_number": "05XXXXXXXXX",
"division": 1,
"password": "#hashedpassword#"
}
NOTE
  • If the user exists and is a superuser, it updates the first_name, last_name, phone_number and division information. If not a superuser, it raises a UserAlreadyExistsException error.
  • If division.is_active is not true, it gives the error "Deactivated divisions cannot be assigned to users."
  • If the Commerce service returns an HTTP status error, it raises an APIConnectionException error.

Update User

Used to update a user in the system. During the update process, the system first checks if the user is active. If the user is inactive, then verifies whether the division is active. If the division is active, the user is updated as active. However, if the division is not active, a DivisionNotActiveException error is thrown.

Following the update on the B2B side, updates on the Commerce platform using the /users/profile endpoint.

Path Parameter:

PropertyRequiredDescriptions
idTrueThe user id of the user.

Body Parameters:

PropertyData TypeRequiredDescriptions
first_namestringFalseThe first name of the user.
last_namestringFalseThe last name of the user.
phone_numberstringFalseThe phone number of the user.
divisionintegerFalseThe division id of the user.

Example Request

curl --location --request PUT '{host}/api/v1/users/1/' \
--header 'Authorization: Token {TOKEN}' \
--header 'Content-Type: application/json' \
--data '{
"division": 1,
"first_name": "firstname",
"last_name": "lastname",
"phone_number": "5554443322"
}'

Example Response (200 OK)

{
"id": 1,
"first_name": "firstname",
"last_name": "lastname",
"phone_number": "5554443322",
"division": 1
}
NOTE

If division.is_active is not true, it gives the error "Deactivated divisions cannot be assigned to users."

User List

This process is used to retrieve a list of all users in the system where the remote_id is not null.

Example Request

curl --location --request POST '{host}/api/v1/users/' \
--header 'Authorization: Token {TOKEN}' \

Query Parameters:

PropertyFilter TypeDescription
idExactFilters users by the exact user ID.
is_activeBooleanFilters users based on their activation status (True/False).
emailCase-insensitive ContainFilters users with email containing the specified substring.
divisionExactFilters users by the exact division id.
division_typeEnumFilters users using a main, sub
first_nameCase-insensitive ContainFilters users with the first name containing the specified substring.
last_nameCase-insensitive ContainFilters users with the last name containing the specified substring.
phone_numberCase-insensitive ContainFilters users with the phone number containing the specified substring.

Example Response (200 OK)

{
"count": 1,
"next": "{host}/api/v1/users/?limit=20&page=2",
"previous": null,
"results": [
{
"id": 1,
"email": "firstname.lastname@test.com",
"first_name": "firstname",
"last_name": "lastname",
"phone_number": "5554443322",
"division": {
"id": 1,
"name": "Akinon Main Division",
"division_type": "main"
},
"is_active": true,
"shop_token": "########",
"remote_id": 1,
"date_joined": "2023-12-14T11:17:22.670111Z",
"last_login": null
}
]
}

User Detail

This operation is used to retrieve details of a specific user in the system.

Path Parameter:

PropertyRequiredDescriptions
idTrueThe user id of the user.

Example Request

curl --location --request GET '{host}/api/v1/users/1/' \
--header 'Authorization: Token {TOKEN}' \

Example Response (200 OK)

{
"id": 1,
"email": "firstname.lastname@akinon.com",
"first_name": "firstname",
"last_name": "lastname",
"phone_number": "5554443322",
"division": {
"id": 1,
"name": "Akinon Main Division",
"division_type": "main"
},
"is_active": true,
"shop_token": "########",
"remote_id": 1,
"date_joined": "2023-12-14T11:17:22.670111Z",
"last_login": null
}

Activate User

This process is used to activate users. First, it checks whether the division to which the user is affiliated is active. If the division is not active, a DivisionNotActiveException error is raised.

If the division is active, the user is activated. Subsequently, a request is sent to the /users/{user_id}/ endpoint on the Commerce side to notify that the user has been activated. The request body for this operation is {"is_active": true}.

Path Parameters:

PropertyRequiredDescriptions
idTrueThe user id of the user.

Example Request

curl --location --request POST '{host}/api/v1/users/1/activate/' \
--header 'Authorization: Token {TOKEN}' \

Example Response (200 OK)

{}
NOTE

If the Commerce service returns an HTTP status error, it raises an APIConnectionException error.

Deactivate User

This process is used to deactivate users. After deactivating the user, a request is sent to the /users/{user_id}/ endpoint on the Commerce side to notify that the user has been deactivated. The request body for this operation is {"is_active": false}

Path Parameters:

PropertyRequiredDescriptions
idTrueThe user id of the user.

Example Request

curl --location --request POST '{host}/api/v1/users/1/deactivate/' \
--header 'Authorization: Token {TOKEN}' \

Example Response (200 OK)

{}
NOTE

If the Commerce service returns an HTTP status error, it raises an APIConnectionException error.

Update Remote ID

This process is used to update user remote id users. A Celery task is initiated to send a request to the /users/?email={email} endpoint on the Commerce side. Subsequently, the task ensures the user's remote_id information is updated with the received id.

Path Parameters:

PropertyRequiredDescriptions
idTrueThe user id of the user.

Example Request

curl --location --request POST '{host}/api/v1/users/1/update_remote_id/' \
--header 'Authorization: Token {TOKEN}' \

Example Response (200 OK)

{}
NOTE

If the Commerce service returns an HTTP status error, it raises an APIConnectionException error.