This section explains how to login & manage user through Airfob Portal APIs.

| Airfob portal account and portal site need to be created in advance to use Airfob portal API. For more information on how to sign up and create a portal site, please refer to the below links. | ||
| - | https://mocasystemen.crunch.help/admin/create-account | |
| - |
https://mocasystemen.crunch.help/admin/create-site |
|

| Your system needs to get 'token value' after login, and use it as bearer in the Authroization header with your following API requests. |
||
| Each token has one hour timelimit for its validiay. Once it expires, it needs to get a new token and change the bearer token to the new one for further API requests. |

api.mc.mocainc.com

|
URL: /login Method: POST Request |
||||||||||||||||
|
||||||||||||||||
Response |
||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
Example |
POST - /login
Request:
{"email": "api@mocainc.com", "password": "moca1!system"}
Response:
{"status":200,"message":"success",
"record":{
"email":"api.mocainc.com",
"accountType":"sitemanager",
"accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhYyI6InNpdGVtYW5hZ2VyIiwiZW0iOiJjaGFybGVzQHN1cHJlbWEuY28ua3IiLCJleHAiOjE1Njk4MDYxNTYsImlhdCI6MTU2OTgwMjU1Nn0.1QR22Y41kEoHwwWbkrq5BJwcfg4OyWszkSgLIUT18Zw",
"name":"TestUser",
"accountStatus":"ACTIVATED"
}
}

| User & card creation can be done together. | |
| Card type is automatically assigned acccording to the site card type. | |
| If the site is set to use 'Regular', the regular card will be issued. |
|
| If the site is set to use 'Dynamic', the dynamic card will be issued, and the same is for 'Airfob Service'. |
| URL: /user/card Method: POST Request |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
Response |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example |
POST - /user/card
Request:
{"siteId": "0",
"user": {
"userKey": "1",
"email": "moca@mocainc.com",
"phone":"+821022223333",
"meta":"{\"name\":\"모카\",\"department\":\"모바일\",\"title\":\"팀원\"}",
"portraitData":"BASE64ENCODED-BINARY",
"feedType": "EMAIL"
},
"card": {
"number":"8352800",
"startDate":1587778190617,
"endDate":1587778250617
}
}
Response:
{"status":200,"message":"success",
"record": {
"userId":"3",
"userKey":"1",
"email":"moca@mocainc.com",
"phone":"+821022223333",
"meta":"{\"name\":\"모카\",\"department\":\"모바일\",\"title\":\"팀원\"}",
"portrait":"https://IMG-URL",
"feedType":"EMAIL",
"card":{
"id":"43548",
"number":"8352800",
"status":"INACTIVE",
"cardType":"DYNAMIC",
"format":"GENERAL",
"cardTypeDesc":"GENERAL",
"startDate":1587778190617,
"endDate":1587778250617}
}
}
}

| URL: /users/search Method: POST Request |
||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
Response |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example |
POST - /users/search
Request:
{"siteId": "0"}
Response:
{"status":200,"message":"success","total":"1",
"records":[
{"userId":"3",
"userKey":"1",
"email":"moca@mocainc.com",
"phone":"+821022223333",
"meta":"{\"name\":\"모카\",\"department\":\"모바일\",\"title\":\"팀원\"}",
"portrait":"https://IMG-URL",
"feedType":"EMAIL",
"card":{
"id":"43548",
"number":"8352800",
"status":"INACTIVE",
"cardType":"DYNAMIC",
"format":"GENERAL",
"cardTypeDesc":"GENERAL",
"startDate":1587778190617,
"endDate":1587778250617}
}
]
}

| URL: /users/delete Method: POST Request - List |
||||||||||||
|
||||||||||||
Response |
||||||||||||||||
|
||||||||||||||||
Example |
POST - /users/delete
Request:
[{"userId": "303"},
{"userId": "304"}
]
Response:
{"status":207,"message":"Multi-Status",
"total":"2","success":"2","failure":"0",
"records":[
{"status":200,"message":"success"},
{"status":200,"message":"success"}
]
}

| In order to delete the card, the status value needs to be 'FORCE_DELETE.' |
| URL: /cards Method: PUT Request - List |
||||||||||||||||
|
||||||||||||||||
Response |
||||||||||||||||||||
|
||||||||||||||||||||
Example |
PUT - /cards
Request:
[{"cardId": "202"
"status": "FORCE_DELETE"},
{"cardId": "203",
"status": "FORCE_DELETE"}
]
Response:
{"status":207,"message":"Multi-Status",
"total":"2","success":"2","failure":"0",
"records":[
{"status":200,"message":"success",
"record": {"status": "DELETE"}},
{"status":200,"message":"success",
"record": {"status": "DELETE"}}
]
}

| Resend is for sending the download link again. Therefore, it cannot be processed when the card is already activated. |
| URL: /card/send Method: POST Request |
||||||||||||||||||||
|
||||||||||||||||||||
Response |
||||
| - None |
Example |
POST - /card/send
Request:
{"siteId": "0", "number": "43548"}
Response:
{"status":200,"message":"success"}

| Reissue is for the same mobile card data resend. Therefore, it cannot modify user & card data. |
| URL: /user/card Method: PUT Request |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
Response |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example |
PUT - /user/card
Request:
{"siteId": "0",
"userId" : "3",
"card": {
"startDate":1587778190617,
"endDate":1587778250617}
}
}
Response:
{"status":200,"message":"success",
"record": {
"userId":"3",
"userKey":"1",
"email":"moca@mocainc.com",
"phone":"+821022223333",
"meta":"{\"name\":\"모카\",\"department\":\"모바일\",\"title\":\"팀원\"}",
"portrait":"https://IMG-URL",
"feedType":"EMAIL",
"card":{
"id":"43548",
"number":"8352800",
"status":"INACTIVE",
"cardType":"DYNAMIC",
"format":"GENERAL",
"cardTypeDesc":"GENERAL",
"startDate":1587778190617,
"endDate":1587778250617}
}
}
}