Sample code for 30+ languages & platforms
B4X

GeoOp - Create a New User

See more GeoOp Examples

Create a new GeoOp user.

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

'  This example assumes the Chilkat API to have been previously unlocked.
'  See Global Unlock Sample for sample code.

'  This example also assumes an OAuth2 access token was previously fetched.
'  and saved in a JSON file.  

'  First get our previously obtained access token.
'  {"access_token":"e6dqdG....mzjpT04w==","token_type":"Bearer","expires_in":2592000,"owner_id":999236}
Dim jsonToken As ChilkatJsonObject
jsonToken.Initialize
success = jsonToken.LoadFile("qa_data/tokens/geoop.json")

'  This example assumes we previously obtained an access token
Dim oauth2 As ChilkatOAuth2
oauth2.Initialize("oauth2")
oauth2.AccessToken = jsonToken.StringOf("access_token")

Dim rest As ChilkatRest
rest.Initialize("rest")

'  Connect to GeoOp..
'  Note: The same REST object, once connected, can be used for many requests.
'  The bAutoReconnect argument allows it to automatically reconnect as required for any subsequent request.

Dim bAutoReconnect As Boolean = True
success = rest.Connect("api.geoop.com", 443, True, bAutoReconnect)
If success <> True Then
    Log(rest.LastErrorText)
    Return
End If


'  Provide the authentication credentials (i.e. the access token)
rest.SetAuthOAuth2(oauth2)

'  Set the X-Version header.
rest.AddHeader("X-Version", "1.0")

'  To create a new user, we must build and send the following JSON:
'  {
'      "users": [
'          {
'              "account": {
'                  "id": 39409    <--- This account ID must be one that already exists.
'              },
'              "firstName": "Geoff",
'              "lastName": "Wirtz",
'              "companyName": "Sample Company",
'              "phone": "+12349282001",
'              "mobile": "+12349332744",
'              "email": "gwirtz@example2.com",
'              "login": "gwirtz_sample2",
'              "newPassword": "pa$$wordz",
'              "newPasswordConfirm": "pa$$wordz"
'          }
'      ]
'  }

Dim jsonUser As ChilkatJsonObject
jsonUser.Initialize
jsonUser.UpdateInt("users[0].account.id", 39409)
jsonUser.UpdateString("users[0].firstName", "Geoff")
jsonUser.UpdateString("users[0].lastName", "Wirtz")
jsonUser.UpdateString("users[0].companyName", "Sample Company")
jsonUser.UpdateString("users[0].phone", "+12349282001")
jsonUser.UpdateString("users[0].mobile", "+12349332744")
jsonUser.UpdateString("users[0].email", "gwirtz@example2.com")
jsonUser.UpdateString("users[0].login", "gwirtz_sample2")
jsonUser.UpdateString("users[0].newPassword", "pa$$wordz")
jsonUser.UpdateString("users[0].newPasswordConfirm", "pa$$wordz")

'  Examine the JSON we're about to send...
jsonUser.EmitCompact = False
Log(jsonUser.Emit)

rest.AddHeader("Content-Type", "application/json")

jsonUser.EmitCompact = True
Dim responseBody As String = rest.FullRequestString("POST", "/users", jsonUser.Emit)
If rest.LastMethodSuccess <> True Then
    Log(rest.LastErrorText)
    Return
End If


'  If the response status code did not indicate success, then see what happened..
If rest.ResponseStatusCode <> 200 Then
    Log("Request Header: ")
    Log(rest.LastRequestHeader)
    Log("----")
    Log("Response StatusCode = " & rest.ResponseStatusCode)
    Log("Response StatusLine: " & rest.ResponseStatusText)
    Log("Response Header:")
    Log(rest.ResponseHeader)
    Log(responseBody)
    Return
End If


Dim json As ChilkatJsonObject
json.Initialize
json.EmitCompact = False
json.Load(responseBody)
'  Show the full JSON response..
Log(json.Emit)

'  The success JSON looks like this:
'  {
'    "result": "success",
'    "users": [
'      {
'        "id": 984244,
'        "firstName": "Geoff",
'        "lastName": "Wirtz",
'        "companyName": "Sample Company",
'        "email": "gwirtz@example2.com",
'        "phone": "+12349282001",
'        "mobile": "+12349332744",
'        "hourlyRate": 0,
'        "active": 1,
'        "deleted": false,
'        "colour": "#000000",
'        "created": "2016-10-26T18:03:59+00:00",
'        "modified": "2016-10-26T18:03:59+00:00",
'        "isAssignable": true,
'        "avatarUrl": "https:\/\/www.geoop.com\/images\/mobithumb_984244.jpg",
'        "role": {
'          "id": 2
'        },
'        "account": {
'          "id": 39409
'        },
'        "status": {}
'      }
'    ],
'    "metadata": {
'      "receivedItemsCount": 1,
'      "validItems": [
'        0
'      ],
'      "invalidItems": [
'      ]
'    }
'  }
'