A profile can be updated by calling the url /v1/companies/<companyId>/buckets/<bucketId>/profiles/<profileId>. The method should be POST and a successful profile update will result in a response status 200 OK. The update to a profile is a partial update and any portion of the profile namely "session", "attributes" or "services" can be updated. The resource still takes a profile representation as request body. Sessions, attributes or services in this profile will by inserted into the existing profile. If any session (or events inside a session), attribute or service matches with an existing session (or events inside the session), attribute or service, the exiting will be updated to the new with priority to the new values.


Required permission profile.update

Request Headers

Header

Required

Acceptable Value(s)

Description

Content-typeYesapplication/json
AcceptYesapplication/json, application/javascript, image/*Image response will return a 1x1 pixel result.
Content-encodingNogzipCaller can send a gzipped request to the API and set the Content-encoding as gzip.
Accept-encodingNogzip

Caller can request a gzipped response from the API and set the Accept-encoding as gzip.


Query Parameters

Key

Required

Description

app_keyNoAn app key refers to a collectApp. If an app key is specified, the profile data is added as the collectApp corresponding to that app key. If no app key is specified then profile data is added using the default collectApp "web". Similarly, the response will return the collectApp data corresponding to the app key. The returned data will additionally be filtered though any whitelists and/or blacklists configured for this collect app. If no collect app is specified, data and; blacklist and whitelist configurations of collectApp "web" will be used.
max_return_sizeNoMax return size refers to the size of the profile to be returned to the caller. If no max_return_size is specified, the profile of size 500 is returned to the caller. Please read the documentation about profile trimming to learn more about how the profile is trimmed to the specified size.
max_return_eventsNoMax return events refers to the the total number of events to be returned to the caller. The returned events can be distributed over several sessions. The max_return_events can be less than expected in the response if the profile does not have enough events or if the profile becomes larger than the max_return_size.


Response Headers

Header

Description

LocationAbsolute url of the newly created resource.
Content-typeContent type of the response body.
VaryWill contain the Accept-encoding header.
Content-encodingWill contain encoding "gzip".


Example 1: Request and response body when updating existing profile with a new session

Assume that a profile represented with the following JSON exists


Existing profile
{
   "id":"<profileId>",
   "createdAt":<timestamp milliseconds>,
   "sessions":[
        {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
                "key":"value"
            },
            "services":[
               {
                  "id":"geo",
                  "data":{
                     "countryCode":0,
                     "countryName":"<a country>",
                     "region":"<a region>",
                     "city":"<a city>",
                     "postalCode":null,
                     "latitude":0.0,
                     "longitude":0.0,
                     "dmaCode":0,
                     "areaCode":0,
                     "metroCode":0
                  }
               }
            ],
            "events":[
                {
                    "id":"<eventId>",
                    "createdAt":<Timestamp milliseconds>,
                    "definitionId":"<definitionId>",
                    "data":{
                        "key":"value"
                    }
                }
            ]
        }
    ]
}



Then an update is issued on this profile with the following JSON in request body


Request Body
{
   "id":"<profileId>",
   "sessions":[
        {
            "id":"<sessionId 1>",
            "createdAt":<timestamp milliseconds 1>,
            "collectApp":"<collect app name 1>",
            "section":"<section name 1>",
            "data":{
                "key1":"value1"
            },
            "events":[
                {
                    "id":"<eventId 1>",
                    "createdAt":<Timestamp milliseconds 1>,
                    "definitionId":"<definitionId 1>",
                    "data":{
                        "key1":"value1"
                    }
                }
            ]
        }
    ]
}


The resultant JSON for this request will be


Response body
{
   "profile":{
      "id":"<profileId>",
      "version":"1.0",
      "createdAt":<timestamp milliseconds>,
      "sessions":[
         {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
               "key":"value"
            },
            "services":[
               {
                  "id":"geo",
                  "data":{
                     "countryCode":0,
                     "countryName":"Sweden",
                     "region":"26",
                     "city":"Stockholm",
                     "postalCode":null,
                     "latitude":59.333298,
                     "longitude":18.050003,
                     "dmaCode":0,
                     "areaCode":0,
                     "metroCode":0
                  }
               }
            ],
            "events":[
               {
                  "id":"<eventId 1>",
                  "createdAt":<timestamp milliseconds>,
                  "definitionId":"<definitionId>",
                  "data":{
                     "key":"value"
                  },
                  "services":[
 
                  ]
               }
            ]
         },
         {
            "id":"<sessionId 1>",
            "createdAt":<timestamp milliseconds 1>,
            "collectApp":"<collect app name 1>",
            "section":"<section name 1>",
            "data":{
               "key1":"value1"
            },
            "services":[
               {
                  "id":"geo",
                  "data":{
                     "countryCode":0,
                     "countryName":"Sweden",
                     "region":"26",
                     "city":"Stockholm",
                     "postalCode":null,
                     "latitude":59.333298,
                     "longitude":18.050003,
                     "dmaCode":0,
                     "areaCode":0,
                     "metroCode":0
                  }
               }
            ],
            "events":[
               {
                  "id":"<eventId 1>",
                  "createdAt":<timestamp milliseconds 1>,
                  "definitionId":"<definitionId 1>",
                  "data":{
                     "key1":"value1"
                  },
                  "services":[
 
                  ]
               }
            ]
         }
      ],
      "attributes":[
 
      ],
      "services":[
 
      ],
      "mergedProfiles":[
  
      ]
   },
   "links":{
      "self":"http://&lt;host&gt;/v1/companies/&lt;companyId&gt;/buckets/&lt;bucketId&gt;/profiles/&lt;profileId>"
   }
}


Example 2: Request and response body when updating existing profile with an existing session but different event

Assume that a profile represented with the following JSON exists


Existing profile
{
   "id":"<profileId>",
   "createdAt":<timestamp milliseconds>,
   "sessions":[
        {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
                "key":"value"
            },
            "services":[
               {
                  "id":"geo",
                  "data":{
                     "countryCode":0,
                     "countryName":"<a country>",
                     "region":"<a region>",
                     "city":"<a city>",
                     "postalCode":null,
                     "latitude":0.0,
                     "longitude":0.0,
                     "dmaCode":0,
                     "areaCode":0,
                     "metroCode":0
                  }
               }
            ],
            "events":[
                {
                    "id":"<eventId>",
                    "createdAt":<Timestamp milliseconds>,
                    "definitionId":"<definitionId>",
                    "data":{
                        "key":"value"
                    }
                }
            ]
        }
    ]
}



Then an update is issued on this profile with the following JSON in request body


Request Body
{
   "id":"<profileId>",
   "sessions":[
        {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds 1>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
                "key":"value1"
                "key1":"value1"
            },
            "events":[
                {
                    "id":"<eventId 1>",
                    "createdAt":<Timestamp milliseconds 1>,
                    "definitionId":"<definitionId 1>",
                    "data":{
                        "key1":"value1"
                    }
                }
            ]
        }
    ]
}


The resultant JSON for this request will be


Response Body
{
   "profile":{
      "id":"<profileId>",
      "version":"1.0",
      "createdAt":<timestamp milliseconds>,
      "sessions":[
         {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
               "key":"value1",
               "key1":"value1"
            },
            "services":[
               {
                  "id":"geo",
                  "data":{
                     "countryCode":0,
                     "countryName":"Sweden",
                     "region":"26",
                     "city":"Stockholm",
                     "postalCode":null,
                     "latitude":59.333298,
                     "longitude":18.050003,
                     "dmaCode":0,
                     "areaCode":0,
                     "metroCode":0
                  }
               }
            ],
            "events":[
                   {
                  "id":"<eventId>",
                  "createdAt":<timestamp milliseconds>,
                  "definitionId":"<definitionId>",
                  "data":{
                     "key":"value"
                  },
                  "services":[
 
                  ]
                },
                {
                  "id":"<eventId 1>",
                  "createdAt":<timestamp milliseconds 1>,
                  "definitionId":"<definitionId 1>",
                  "data":{
                     "key1":"value1"
                  },
                  "services":[
 
                  ]
               }
            ]
         }
      ],
      "attributes":[
 
      ],
      "services":[
 
      ],
      "mergedProfiles":[
  
      ]
   },
   "links":{
      "ProfileLinks":".ProfileLinks",
      "self":"http://&lt;host&gt;/v1/companies/&lt;companyId&gt;/buckets/&lt;bucketId&gt;/profiles/&lt;profileId>"
   }
}



Example 3: Request and response body when updating existing profile with an existing session and existing event

Assume that a profile represented with the following JSON exists

Existing profile
{
   "id":"<profileId>",
   "createdAt":<timestamp milliseconds>,
   "sessions":[
        {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
                "key":"value"
            },
            "services":[
               {
                  "id":"geo",
                  "data":{
                     "countryCode":0,
                     "countryName":"<a country>",
                     "region":"<a region>",
                     "city":"<a city>",
                     "postalCode":null,
                     "latitude":0.0,
                     "longitude":0.0,
                     "dmaCode":0,
                     "areaCode":0,
                     "metroCode":0
                  }
               }
            ],
            "events":[
                {
                    "id":"<eventId>",
                    "createdAt":<Timestamp milliseconds>,
                    "definitionId":"<definitionId>",
                    "data":{
                        "key":"value"
                    }
                }
            ]
        }
    ]
}


Then an update is issued on this profile with the following JSON in request body


Request Body
{
   "id":"<profileId>",
   "sessions":[
        {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds 1>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
                "key":"value1"
                "key1":"value1"
            },
            "events":[
                {
                    "id":"<eventId>",
                    "createdAt":<Timestamp milliseconds 1>,
                    "definitionId":"<definitionId 1>",
                    "data":{
                        "key1":"value1"
                    }
                }
            ]
        }
    ]
}


The resultant JSON for this request will be

{
   "profile":{
      "id":"<profileId>",
      "version":"1.0",
      "createdAt":<timestamp milliseconds>,
      "sessions":[
         {
            "id":"<sessionId>",
            "createdAt":<timestamp milliseconds>,
            "collectApp":"<collect app name>",
            "section":"<section name>",
            "data":{
               "key":"value1",
               "key1":"value1"
            },
            "services":[
               {
                  "id":"geo",
                  "data":{
                     "countryCode":0,
                     "countryName":"Sweden",
                     "region":"26",
                     "city":"Stockholm",
                     "postalCode":null,
                     "latitude":59.333298,
                     "longitude":18.050003,
                     "dmaCode":0,
                     "areaCode":0,
                     "metroCode":0
                  }
               }
            ],
            "events":[
                {
                  "id":"<eventId>",
                  "createdAt":<timestamp milliseconds>,
                  "definitionId":"<definitionId 1>",
                  "data":{
                     "key1":"value1"
                  },
                  "services":[
 
                  ]
               }
            ]
         }
      ],
      "attributes":[
 
      ],
      "services":[
 
      ],
      "mergedProfiles":[
  
      ]
   },
   "links":{
      "self":"http://&lt;host&gt;/v1/companies/&lt;companyId&gt;/buckets/&lt;bucketId&gt;/profiles/&lt;profileId>"
   }
}