User Details Provider specification
Webhook notifications
Current version | Updated by | Updated at |
---|---|---|
Version 1.0.2 | Tom jakopovic | 10 Oct 2022 |
Version 1.0.1 | Ivan Bajalovic | 1 Sep 2022 |
Version 1.0.0 | Ivan Bajalovic | 1 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.
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"
}
The details
field can be any object or nested objects.
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": {
}
}
Search
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"
}
}
}