Skip to main content
Use profile custom fields to exchange organization-specific profile data through the Minerva Profiles API. Definitions belong to your organization and apply across all its workspaces. Requests use immutable definition keys, while responses include both keys and customer-facing labels. For administrator workflows, batch uploads, list columns, and profile views, see the Profile Custom Fields Guide.
This capability is not yet released to production. The Profiles API, dashboard stories, and this documentation are being prepared together. Do not deploy an integration until your Minerva technical contact confirms that the feature is available for your organization.

Prerequisites and key discovery

You need an application API key for the target organization and workspace. Send it in the x-api-key header. An administrator creates definitions under Administration > Configuration > Profile Custom Fields. Record each definition’s immutable key and, for Choice fields, each option’s stored value. Use keys in requests. Do not use labels as JSON property names because labels can be renamed.
The examples below use https://api.gominerva.com/clm/v1. See the API Reference for authentication and generated endpoint pages.

Request contract

profileCustomFields is a JSON object whose property names are definition keys. Each value must use the JSON type required by that definition.
Use the object on these operations: On create or onboarding, null is equivalent to omitting an optional custom value and fails validation when the field is required. A PATCH validates the custom fields supplied in that request. Custom fields omitted from the request remain unchanged, and null clears one named value. Required custom fields that are not included are not checked again.
Writes use the latest definitions. An archived or unknown key, a wrong JSON type, an invalid Choice value, or an invalid Date returns HTTP 400. If Minerva cannot retrieve the definitions, it rejects the write instead of saving an unvalidated value. Fetch the latest definitions before sending values, and treat configuration changes as an integration contract change.

Type matrix

Text values support up to 4,000 characters. Structured data must be an object or array and is limited to 16 KB per field. The combined custom values on one profile are limited to 64 KB. Exact integral Number values are accepted through the signed 64-bit range. Choice requests use the option’s stored value, such as funded, not its display label, such as Funded. After a Choice definition is saved, each existing option value remains valid and cannot be changed or removed in this release. Administrators can add options, change display labels, and reorder options. This preserves the identifiers already stored on profiles so historical values remain readable. If the vocabulary must be replaced, contact Minerva Support. Archiving the field and creating a new one is another option, but the new field starts empty and does not inherit existing profile values.

Create a profile

Create and screen a profile

Use POST /onboarding/profiles when profile creation should also perform the configured onboarding screen.

Update or clear values

PATCH updates only the profile fields and custom field keys supplied in the request. Omitted custom fields remain unchanged, and null clears one named value.
cURL
This changes Loan Status, clears Servicing Details, and preserves Loan Number and every other custom value.
JavaScript

Response contract

Single-profile and list responses can include an optional profileCustomFields array. Items are ordered by definition priority.
Profile reads may take up to 60 seconds to reflect a definition edit or archive. During that period, GET /profiles/{profileId}, GET /profiles, and dashboard read views may return the prior field or Choice option label, or may still include a newly archived field. Stored profile values do not change. After the read view refreshes, renamed labels are updated and archived fields are omitted. Profile writes always validate against the latest definition.
For Choice fields, value is the stable stored option value and valueLabel is the display label resolved for that response. Store or compare value; render valueLabel when present. After an administrator changes a field label or Choice option label, profile reads can return the previous label for up to 60 seconds. Profile writes always validate against the latest definition. The list operation returns the same optional array on each item:
Large integral Number values are emitted exactly as JSON numbers. JavaScript’s default JSON.parse rounds integers above Number.MAX_SAFE_INTEGER (9007199254740991). Use a lossless JSON parser before converting the response to JavaScript values. When a business identifier does not need arithmetic, define it as Text at the integration boundary instead. The Minerva API still requires a JSON number for fields whose definition type is Number.

Validation errors

The response follows the standard Minerva error shape, and the message identifies the custom field path when available. For profile writes, HTTP 400 means the request is malformed or a value does not match the current definition; correct the request before retrying. HTTP 409 means a Text value exceeds 4,000 characters, a Structured data value exceeds 16 KB, or the combined custom values exceed 64 KB; shorten the values before retrying. Separately, a definition-management request returns HTTP 409 if it omits or changes a saved Choice option value. Retain the complete saved Choice set, with any additions or label and order changes, before retrying that request. Common failures include: Example error handling:
JavaScript

Required-field rollout guidance

After a definition becomes required, the next profile create or onboarding request must include a valid non-null value. The change does not backfill existing profiles or make a PATCH fail when that required custom field is omitted. Supplied PATCH values still validate against the latest type, archive status, and Choice vocabulary. Before an administrator enables Required:
  1. Inventory every profile creation path, including direct create, onboarding, CSV, and XLSX.
  2. Update producers to send the immutable key with a correctly typed value.
  3. Test missing, null, wrong-type, unknown-key, and archived-key requests.
  4. Coordinate the activation time with the administrator.
  5. Monitor HTTP 400 responses after activation. Prefer a forward edit that makes the field optional again. Historical rollback replays an old snapshot through current validation and can return HTTP 409 if it would omit a saved Choice value; see Archive, history, and rollback.
Optional is the safer default when not every source system has the value.

Backward compatibility

profileCustomFields is optional in both requests and responses. Existing clients can continue sending the old profile request shape. Responses omit the array when no stored values resolve to active definitions, preserving the previous response shape. Stored values are retained when a definition is archived. After the read view refreshes, archived definitions and values with no active definition are not emitted. Clients that deserialize with strict schemas should allow the optional array before the feature is enabled. Each array item contains key, label, type, and value; valueLabel is optional and is used for Choice fields.

Endpoint reference

Use the Profiles - Endpoints section of the API Reference for generated schemas and operation details:
  • Create Profile: POST /profiles
  • Create Profile (Onboarding): POST /onboarding/profiles
  • Update Profile: PATCH /profiles/{profileId}
  • Get Profile Details: GET /profiles/{profileId}
  • List profiles: GET /profiles