> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ulm.m1amdocs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MarketONE Connect 2021.03 - Release Notes

Release Date: March 31, 2021

## Announcements

This release includes the following announcements:

* Filtering and ordering of Custom Data array items.
* Machine-to-Machine (M2M) partner access to specified User Custom Data.
* User profile management added to MarketONE Admin.
* Additional OIDC claims that map to "profile" OIDC scope.

## Connect Features

This section describes the key updates in this release.

### Custom Data - Filtering and Ordering

Connect Cloud recently released a set of Custom Data API for client applications to store, retrieve, and update custom data within the Connect Cloud data store, and to associate that data to an existing User entity. This feature allows an application to capture and leverage additional data points regarding a known end user, usually with regards to the end user's activity within a given client's service (for example, viewing history, preferences, etc). Organizations leveraging this service can structure and store data in most any order they want, provided that the data properly conforms to JavaScript Object Notion (JSON). If valid, the custom data for a User is stored as a single JSON document or record in the cloud.

The Custom Data API includes a set of endpoints specifically for creating JSON arrays (that is, lists) within a Custom Data record. As per the JSON standard, arrays can include complex objects and, depending on the nature of an application, each array (or each object within the array) could feasibly contain numerous individual elements. Therefore, organizations will inevitably need the ability to:

* order and organize the custom data in a given GET request
* update select elements within an array of custom data, without the requirement to retrieve and update the entire set of custom data, for a given User entity.

As of this 2021.03 release, the Custom Data service API now includes additional options for filtering on select properties within a Custom Data array, and to perform read/write/delete operations against those select properties. In addition to this, support for ordering the elements within a GET request has also been added. See the sections below for more details.

**Filtering**

The following APIs now include additional options to filter on selects elements within an array of Custom Data:

| API | Description |
| - | - |
| GET /customData/v1/user/\{userId}/\{PropertyArrayName} | Retrieve a set of custom data for the specified Connect User entity. |
| PATCH /customData/v1/user/\{userId}/\{PropertyArrayName} | Update a set of custom data for the specified Connect User entity. |
| DELETE /customData/v1/user/\{userId}/\{PropertyArrayName} | Delete a set of custom data for the specified Connect User entity. |

The following table lists and describes the filtering options that the above mentioned API can use as query parameters in the request URL:

| Operator | Description | Example |
| - | - | - |
| eq | Equal to | city eq "San Mateo" |
| ne | Not equal to | city ne "Mexico City" |
| gt | Greater than | price gt 20 |
| ge | Greater than or equal | price ge 10 |
| lt | Less than | price lt 20 |
| le | Less than or equal | price le 100 |
| sw | Start with | name sw "pa" |
| ew | End with | city ew "to" |
| co | Contains | name co "ab" |

| Operator | Description | Example |
| - | - | - |
| and | Logical and | price le 200 and price gt 35 |
| or | Logical or | price le 35 or price gt 200 |
| not | Logical negation | not price le 35 |

| Operator | Description | Example |
| - | - | - |
| ( ) | Precedence grouping | (priority eq 1 or city eq "Redmond") and price gt 100 |

For example, this request retrieves all "products" in an array with a price value less than \$10:

| Request - URL |
| - |
| GET https\://\{your.tenant.url}/customdata/v1/user/214/products?filter=price lt 10 |

**Ordering**

In addition to the new filtering query parameters, the `GET /customData/v1/user/{userId}/{PropertyArrayName}` API also includes a new `orderBy` parameter. When a client application needs to retrieve an array of custom data, it can now specify the ordering of that array's content, based on an object's internal field.

For example, this request retrieves all "address" objects by city in ascending ( + ) order:

| Request - URL |
| - |
| GET https\://\{your.tenant.url}/customdata/v1/user/214/addresses?orderBy=+city |

Conversely, this request retrieves all "address" objects by country in descending ( - ) order.

| Request - URL |
| - |
| GET https\://\{your.tenant.url}/customdata/v1/user/214/addresses?orderBy=-country |

**Note:** Navigate to [API Reference](https://developer.m1amdocs.com/api/) in the MarketONE Developer Portal, and select **ULM Custom Data APIs** for the full API library and specification.

### Custom Data - Machine-to-Machine Access

Custom Data is primarily created/updated/deleted within a user context. In other words, an end user first authenticates (either with [Session Start](https://docs.vindicia.com/bundle/b_processGuide/page/connectProcessAPIGuide/processAPIs/c_sessionStart.html) or [Social Login](https://docs.vindicia.com/bundle/b_processGuide/page/connectProcessAPIGuide/processes/identityManagementProcesses/c_onboardAuthenticateUserSocial.html)) before the application accesses the Custom Data APIs for that User ID (either explicitly, or silently).

However, in some cases, an organization's back end may need to update a User's Custom Data outside of a user context. For example, an organization may want to retrieve User Custom Data, ingest the data for their own analytics or other processing, and then push that updated Custom Data back into the cloud. Therefore, applications with the proper partner authorization can now leverage Connect's Machine-to-Machine (M2M) partner authorization header to apply updates to any registered Connect User's set of custom data. To do this, the application simply needs to to include Connect Cloud's [X-Partner-AUTHZ](https://docs.vindicia.com/bundle/b_restApiGuide/page/c_connectHTTPheaders.html) header in the API request:

| Request - URL and Headers |
| - |
| `PATCH https://&#123;tenant.url&#125;/customData/v1/user/&#123;userId&#125; Content-Type: application/json Accept: application/json X-Partner-AUTHZ: dgTXlHWaYKwuQTnvnfI/TPjZpr+YXPifcG44aJ9WAeI` |
| The authorization header is a base64 encoding of a partner key secret, provided by Connect Cloud when the partner is provisioned. |

### MarketONE Admin User Profile

The MarketONE Admin web application is an administrative console available to customer organizations. From this application, an organization's provisioned "Admin users" can manage various settings that apply to the organization's Connect Cloud service, such as security settings, social integrations, and OIDC client management.

As of this release, an Admin user can now view and manage their own user profile within the application. To do this, the Admin user can click their name in the upper-right corner, and select **View Profile**.

<img src="https://mintcdn.com/amdocs-ulm/dRhu6LcnM5ipOkz4/portal/m1Connect/connectReleaseNotes/images/2021_03_Security.png?fit=max&auto=format&n=dRhu6LcnM5ipOkz4&q=85&s=37c0e10ef0034a9959415209a7e21f6a" alt="View profile" width="954" height="452" data-path="portal/m1Connect/connectReleaseNotes/images/2021_03_Security.png" />

From within the profile view, an Admin user can update their display name and password. Simply click on the edit icon next to the **Display Name** or **Password** field, and make edits as desired.

<img src="https://mintcdn.com/amdocs-ulm/dRhu6LcnM5ipOkz4/portal/m1Connect/connectReleaseNotes/images/2021_03_Profile.png?fit=max&auto=format&n=dRhu6LcnM5ipOkz4&q=85&s=8f9f88d65dcd863d87e7306c600fe937" alt="Update display name and password" width="951" height="447" data-path="portal/m1Connect/connectReleaseNotes/images/2021_03_Profile.png" />

### Support for Additional OIDC Claims That Map to the "profile" OIDC Scope

Connect Cloud allows an organization to register their applications as "Relying Parties" under the [OAuth 2.0 protocol and it's OpenID Connect extension](https://docs.vindicia.com/bundle/b_connectAdminGuide/page/connectGettingStartedGuide/ssoTopics/c_OAuth2andOpenIDConnect.html). In OpenID Connect (OIDC), a registered Relying Party requests specifies **scopes** from an identity provider (in this case, Connect Cloud) and the provider then returns a set of **claims** or pieces of data about a given user (for example, name, email address, etc).

As of this release, Connect Cloud supports two additional standard OIDC claims:

* `locale` – The local language setting for end user, if one is set.
* `updated_at` – The last time the user profile (that is, the Connect User entity) was updated.

These claims map to the `profile` scope. If the OIDC Client is registered in the MarketONE Admin web application, and the client is configured to access the `profile` claim, then Connect Cloud will return data values for the `locale` and `updated_at` claims, alongside other profile claims already supported by Connect Cloud.

For the complete list of scopes (and the claims that map to those scopes) supported by Connect Cloud, refer to the [What Scope and Claims does Connect Cloud Support?](https://docs.vindicia.com/bundle/b_connectAdminGuide/page/connectGettingStartedGuide/ssoTopics/c_OAuth2andOpenIDConnect.html#d9346e882) section of [overview topic on OAuth 2.0 and OIDC](https://docs.vindicia.com/bundle/b_connectAdminGuide/page/connectGettingStartedGuide/ssoTopics/c_OAuth2andOpenIDConnect.html).

## Bug Fixes

The following bugs have been fixed in this release:

| Summary | Description |
| - | - |
| Missing error message in `GET /customData/user/{userID}` | The `GET /customData/user/{userID}` API fails to return the proper error message when there is no Custom Data for the specified User ID. This issue has been resolved. |
| `Access-Control-Allow-Origin CORS` header sometimes missing | Intermittently, there are CORS rejections in the browser due to missing `Access-Control-Allow-Origin` headers in the response. |

## Known Issues

There are no known issues in this release.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.