Skip to main content

User Details Provider specification

Webhook notifications

Current versionUpdated byUpdated at
Version 1.0.2Tom jakopovic10 Oct 2022
Version 1.0.1Ivan Bajalovic1 Sep 2022
Version 1.0.0Ivan Bajalovic1 Aug 2022

HolyWally doesn't store user details. There has to be a provider set up that can securely store user details, and provide data when needed.

img alt

User Details

Store

POST /users

Body:

{
"firstName": "Wile",
"lastName": "Coyote",
"email": "wile@coyote",
"emailVerified": true,
"phoneNumber": "+6588884444",
"phoneVerified": true,
"createdAt": "2020-01-01T12:40:20Z",
"dateOfBirth": "1980-01-01",
"status": "Active",
"address": {
"line1": "Some st",
"line2": "",
"city": "Cartoon Town",
"zip": "10230",
"state": "",
"country": "Cartoon Country"
},
"details": {
}
}

Response: HTTP Status 200

{
"id": "uid:tNHFm92lXk"
}
info

The details field can be any object or nested objects.

note

A user with the Status property other than Active will not be able to use the system. Possible values should be Suspended, Blocked, and Closed.

Update

PATCH /users/{ext-user-id}

Body:

{
"firstName": "Road",
"lastName": "Runner",
}

Response: HTTP Status 200

{
"id": "uid:tNHFm92lXk",
"firstName": "Road",
"lastName": "Runner",
"email": "wile@coyote",
"emailVerified": true,
"phoneNumber": "+6588884444",
"phoneVerified": true,
"createdAt": "2020-01-01T12:40:20Z",
"dateOfBirth": "1980-01-01",
"status": "Active",
"address": {
"line1": "Some st",
"line2": "",
"city": "Cartoon Town",
"zip": "10230",
"state": "",
"country": "Cartoon Country"
},
"details": {
}
}

Read

GET /users/{ext-user-id}

{
"id": "uid:tNHFm92lXk",
"firstName": "Wile",
"lastName": "Coyote",
"email": "wile@coyote",
"emailVerified": true,
"phoneNumber": "+6588884444",
"phoneVerified": true,
"createdAt": "2020-01-01T12:40:20Z",
"dateOfBirth": "1980-01-01",
"status": "Active",
"address": {
"line1": "Some st",
"line2": "",
"city": "Cartoon Town",
"zip": "10230",
"state": "",
"country": "Cartoon Country"
},
"details": {
}
}

POST /users/search

Request body can contain a searchQuery field which Provider may be used to query against different fields, e.g. firstName, lastName, etc... Wild card can be supported (e.g. for any prefix match wi* or *le for suffix match). % can be used as like operator.

{ "searchQuery": "wile" }

and alternatively, for any specific field, a client can pass in a property name and search value (same operators should be supported, wildcard and like operators).

{ "status": "Active" }

Nested object properties should be supported as well, for example address.city.

If the value is an array, then IN operator should be used, for example "firstName": ["wile", "road"] would translate into SQL like syntax where "firstName" IN ('wile', 'road').

Response

{
"pages": 10,
"currentPage": 1,
"perPage": 10,
"data": [
{
"id": "c633293e-118d-4c3b-9ef3-cfaf50460861",
"firstName": "Wile",
"lastName": "Coyote",
....
},
{
"id": "c633293e-118d-4c3b-9ef3-cfaf50460861",
"firstName": "Wile",
"lastName": "Wilson",
....
},
]
}

Organization

Organization is an entity that users belong to.

Store

POST /organizations

Body:

{
"name": "Looney Tunes",
"details": {
"address": {
"line1": "2nd Streen 401"
}
}
}

Response: HTTP Status 200

{
"id": "org:5g4VHaznbY"
}

The details field can be any object or nested objects.

Update

PATCH /organizations/{ext-org-id}

Body:

{
"name": "Looney Tunes by Warner Bros",
}

Response: HTTP Status 200

{
"id": "uid:tNHFm92lXk",
"name": "Looney Tunes by Warner Bros",
"details": {
"address": {
"line1": "2nd Streen 401"
}
}
}

Read

GET /organizations/{ext-org-id}

{
"id": "uid:tNHFm92lXk",
"name": "Looney Tunes by Warner Bros",
"details": {
"address": {
"line1": "2nd Streen 401"
}
}
}