Sample code for 30+ languages & platforms
PureBasic

Outlook Contacts Create a Contact

See more Outlook Contact Examples

Creates an Outlook Contact.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Use your previously obtained access token here: Get Outlook Contacts OAuth2 Access Token (Azure AD v2.0 Endpoint).

    jsonToken.i = CkJsonObject::ckCreate()
    If jsonToken.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/outlookContacts.json")
    If success = 0
        Debug CkJsonObject::ckLastErrorText(jsonToken)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        ProcedureReturn
    EndIf

    CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token"))

    ; Send the following POST:

    ; POST https://graph.microsoft.com/v1.0/me/contacts
    ; Content-type: application/json
    ; 
    ; {
    ;   "givenName": "Pavel",
    ;   "surname": "Bansky",
    ;   "emailAddresses": [
    ;     {
    ;       "address": "pavelb@fabrikam.onmicrosoft.com",
    ;       "name": "Pavel Bansky"
    ;     }
    ;   ],
    ;   "businessPhones": [
    ;     "+1 732 555 0102"
    ;   ]
    ; }

    ; Build the JSON body of the POST.

    ; Use this online tool to generate code from sample JSON: 
    ; Generate Code to Create JSON

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"givenName","Pavel")
    CkJsonObject::ckUpdateString(json,"surname","Bansky")
    CkJsonObject::ckUpdateString(json,"emailAddresses[0].address","pavelb@fabrikam.onmicrosoft.com")
    CkJsonObject::ckUpdateString(json,"emailAddresses[0].name","Pavel Bansky")
    CkJsonObject::ckUpdateString(json,"businessPhones[0]","+1 732 555 0102")

    ; Send the HTTP POST
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST","https://graph.microsoft.com/v1.0/me/contacts",json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))

    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(jResp,CkHttpResponse::ckBodyStr(resp))
    CkJsonObject::setCkEmitCompact(jResp, 0)
    Debug CkJsonObject::ckEmit(jResp)

    ; The send succeeded if the response status code = 201.
    If CkHttpResponse::ckStatusCode(resp) <> 201
        Debug "Failed"
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(jsonToken)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        CkJsonObject::ckDispose(jResp)
        ProcedureReturn
    EndIf

    ; Sample JSON response:

    ; {
    ;   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('4ee732c3-322e-4a6b-b729-2fd1eb5c6004')/contacts/$entity",
    ;   "@odata.etag": "W/\"EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT\"",
    ;   "id": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQBGAAAAAAAu7cUXL5YOTrdsUIw7-v8FBwBUcG0qWqkmQYqWLHQataQxAAAAAAEOAABUcG0qWqkmQYqWLHQataQxAAD0sxexAAA=",
    ;   "createdDateTime": "2021-06-29T16:32:05Z",
    ;   "lastModifiedDateTime": "2021-06-29T16:32:06Z",
    ;   "changeKey": "EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT",
    ;   "categories": [
    ;   ],
    ;   "parentFolderId": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQAuAAAAAAAu7cUXL5YOTrdsUIw7-v8FAQBUcG0qWqkmQYqWLHQataQxAAAAAAEOAAA=",
    ;   "birthday": null,
    ;   "fileAs": "",
    ;   "displayName": "Pavel Bansky",
    ;   "givenName": "Pavel",
    ;   "initials": null,
    ;   "middleName": null,
    ;   "nickName": null,
    ;   "surname": "Bansky",
    ;   "title": null,
    ;   "yomiGivenName": null,
    ;   "yomiSurname": null,
    ;   "yomiCompanyName": null,
    ;   "generation": null,
    ;   "imAddresses": [
    ;   ],
    ;   "jobTitle": null,
    ;   "companyName": null,
    ;   "department": null,
    ;   "officeLocation": null,
    ;   "profession": null,
    ;   "businessHomePage": null,
    ;   "assistantName": null,
    ;   "manager": null,
    ;   "homePhones": [
    ;   ],
    ;   "mobilePhone": null,
    ;   "businessPhones": [
    ;     "+1 732 555 0102"
    ;   ],
    ;   "spouseName": null,
    ;   "personalNotes": "",
    ;   "children": [
    ;   ],
    ;   "emailAddresses": [
    ;     {
    ;       "name": "Pavel Bansky",
    ;       "address": "pavelb@fabrikam.onmicrosoft.com"
    ;     }
    ;   ],
    ;   "homeAddress": {},
    ;   "businessAddress": {},
    ;   "otherAddress": {}
    ; }

    Debug "Contact created."


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(jsonToken)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure