Managing Profiles

Profiles describe the schema of your Data Source

Once a Data Source is created, the next step is to configure its profiles (Data Schemas) that define how the data that you want to ingest is structured.

After completing the profile configuration, they will mirror the modeling of data in an external data store, excluding its relationships. This later will be done afterward in Managing Relationship Definition.

Creating Profiles

Each profile contains a collection of attributes where each one helps describe the profile properties.

  • A simple profile can be created by defining the properties attribute, and describing every attribute with its key and type description.
    • A more complex profile can also contain contained resource, a way to include another already defined profile as an included property.
{
    "properties": {
        "<propertyKey>": {
            "type": "<type>"
        }
    },
    // Optional
    "contained": {
        "<propertyKey>": {
            "types": "[<profileKey>]",
            "cardinality": "<cardinality>"
        }
    }
}

Create a simple profile

Here is an example of a provider profile with four different kinds of properties (symbol (string), integer, date, and array):

{
    "properties": {
        "name": {
            "type": "symbol"
        },
        "practiceNumber": {
            "type": "integer"
        },
        "specialities": {
            "type": "array",
            "items": {
                "type": "symbol"
            }
        }
    }
}

Create a profile with contained resources

Given that a simple profile paymentMethod with a single value property is already created, here is a office profile definition with a contained resource:

{
    "properties": {
        "name": {
            "type": "symbol"
        },
        "note": {
            "type": "symbol"
        }
    },
    "contained": {
        "primaryPaymentMethod": {
            "types": [
                "paymentMethod"
            ],
            "cardinality": "0:1"
        },
        "alternativePaymentMethods": {
            "types": [
                "paymentMethod"
            ],
            "cardinality": "0:*"
        }
    }
}

Considerations

  • See Data Types for all supported property types. Some complex objects like Address and HumanName are supported out of the box.
  • Turn reusable objects into their own profile so they can be included in any profile (ex: A detailed contact information object)
  • Create your profile from the bottom up, starting with reusable objects and simple Profiles to then contained resources.

📘

For more Profile endpoint references (Fetch), see our Profile API documentation.


What’s Next

Once every profile is created, you can either define relationships or send data to be ingested.