Transforming Fields via API

A transformation is the result of the process of mapping fields in your element instance resources to existing fields and objects in a common resource. After you create a common resource, you will select an element instance, choose the resource containing the objects that you want to map to the common resource, and map fields to the common resource. The end result is a a transformation of the selected objects in the element instance.

You can test the APIs described in this section using our interactive documentation. Open Cloud Elements, and then click Custom JS in the header.

Retrieve a List of Common Resources

You can retrieve a list of the common resources in your organization. The list includes all fields defined in the common resource.

To retrieve a list of common resources:

  1. Call the following:

      GET /organizations/objects/definitions
    
  2. Continue to the next step: map fields to create a transformation.

cURL Example

curl -X GET \
  https://api.cloud-elements.com/elements/api-v2/organizations/objects/definitions \
  -H 'authorization: User {USER_SECRET}, Organization {ORGANIZATION_SECRET}' \
  -H 'content-type: application/json'

Map Fields to Create a Default Transformation

Cloud Elements provides several APIs to map resources. This section describes mapping fields for an organization-level default transformation. The result is a default transformation for all instances of a specific element.

To map fields:

  1. Construct a JSON body as shown below. For descriptions of each parameter, see Transformation JSON Parameters.

    {
      "level":"organization",
      "vendorName":"<VENDOR_RESOURCE>",
      "fields":[
        {
          "path":"<COMMON_RESOURCE_FIELD>",
          "type":"<COMMON_RESOURCE_TYPE>",
          "vendorPath":"<VENDOR_FIELD>",
          "vendorType":"<VENDOR_TYPE>"
        }
      ]
    }
    
  2. Call the following, including the JSON body from the previous step:

      POST /organizations/elements/{keyOrId}/transformations/{objectName}
    

Transformation JSON Parameters

Parameter Description Required (Y/N)
level The access level of the transformation, either organization, account, or instance. N. Default depends on endpoint.
vendorName The name of the resource that contains the fields that you want to map to the common resource. N
fields An object containing the field names and data types of the common resource and the vendor resource.
N
path The name of the field in the common resource. Y
vendorPath The name of the field in the vendor resource. Y
type The data type of the field in the common resource.
Data types can be boolean, string, date, and number.
N
vendorType The data type of the field at the vendor. Unless the format is date, you do not need to include this parameter. If the format is date, also include a mask. N

cURL Example

curl -X POST \
  https://api.cloud-elements.com/elements/api-v2/organizations/elements/sfdc/transformations/myContacts \
  -H 'authorization: User {USER_SECRET}, Organization {ORGANIZATION_SECRET}' \
  -H 'content-type: application/json' \
  -d '
  {
  "level":"organization",
  "vendorName":"Contact",
  "fields":[
    {
      "type":"string",
      "path":"FirstName",
      "vendorPath":"FirstName"
    },
    {
      "type":"string",
      "path":"id",
      "vendorPath":"Id"
    },
    {
      "type":"string",
      "path":"LastName",
      "vendorPath":"LastName"
    },
    {
      "type":"date",
      "path":"birthdate",
      "vendorPath":"Birthdate",
      "vendorType":"date",
      "configuration":[

      ]
    }
  ]
}'

Map Fields at the Instance Level

Using the Cloud Elements instances endpoint, you can map fields at the instance level. Mapping fields is a two-step process that includes creating an instance level resource, and then mapping fields to it.

To create an instance level common resource and map fields to it:

  1. Construct a JSON body for the instance level common resource as shown below (see New Common Resource JSON Parameters):

    {
      "fields": [
        {
          "type": "<dataType>",
          "path": "<fieldName>"
        }
      ]
    }
    
  2. Create the common resource. Make the following API call with the JSON body from the previous step, replacing {id} with the instance id, and replacing {objectName} with the name of the common resource:

    POST /instances/{id}/objects/{objectName}/definitions
    
  3. Construct a JSON body to map fields to the new common resource as shown below. For descriptions of each parameter, see Transformation JSON Parameters.

    {
      "level":"instance",
      "vendorName":"<VENDOR_RESOURCE>",
      "fields":[
        {
          "path":"<COMMON_RESOURCE_FIELD>",
          "type":"<COMMON_RESOURCE_TYPE>",
          "vendorPath":"<VENDOR_FIELD>",
          "vendorType":"<VENDOR_TYPE>"
        }
      ]
    }
    
  4. Map fields to the common resource. Call the following, including the JSON body from the previous step:

    POST /instances/{id}/transformations/{objectName}
    

cURL Example

Step 1: Create the common resource

curl -X POST \
  https://api.cloud-elements.com/elements/api-v2/instances/{id}/objects/{objectName}/definitions \
  -H 'authorization: User {USER_SECRET}, Organization {ORGANIZATION_SECRET}' \
  -H 'content-type: application/json' \
  -d '
  {
    "fields": [
      {
        "type": "string",
        "path": "title"
      }
    ]
  }'

Step 2: Map fields to the common resource

curl -X POST \
  https://api.cloud-elements.com/elements/api-v2/instances/{id}/transformations/{objectName} \
  -H 'authorization: User {USER_SECRET}, Organization {ORGANIZATION_SECRET}' \
  -H 'content-type: application/json' \
  -d '
  {
    "vendorName": "Contact",
    "level": "instance",
    "fields": [
      {
        "path": "title",
        "type":"string",
        "vendorPath": "Title"
      }
    ]
  }'

Map Fields at the Account Level

Using the Cloud Elements accounts endpoint, you can map fields at the account level. Mapping fields is a two-step process that includes creating an account level resource, and then mapping fields to it.

To create an account level common resource and map fields to it:

  1. Construct a JSON body for the account level common resource as shown below (see New Common Resource JSON Parameters):

    {
      "fields":[
        {
          "type":"<dataType>",
          "path":"<fieldName>"
        }
      ]
    }
    
  2. Create the common resource. Make one of the following API calls with the JSON body from the previous step, replacing {id} with the account id, and replacing {objectName} with the name of the common resource:

      POST /accounts/objects/{objectName}/definitions
    

      POST /accounts/{id}/objects/{objectName}/definitions
    

  3. Construct a JSON body to map fields to the new common resource as shown below. For descriptions of each parameter, see Transformation JSON Parameters.

    {
      "level":"instance",
      "vendorName":"<VENDOR_RESOURCE>",
      "fields":[
        {
          "path":"<COMMON_RESOURCE_FIELD>",
          "type":"<COMMON_RESOURCE_TYPE>",
          "vendorPath":"<VENDOR_FIELD>",
          "vendorType":"<VENDOR_TYPE>"
        }
      ]
    }
    
  4. Map fields to the common resource. Call the following, including the JSON body from the previous step:

    POST /accounts/{id}/elements/{keyOrId}/transformations/{objectName}
    

cURL Example

Step 1: Create the common resource (default account)

curl -X POST \
  https://api.cloud-elements.com/elements/api-v2/accounts/objects/{objectName}/definitions \
  -H 'authorization: User <USER_SECRET>, Organization <ORGANIZATION_SECRET>' \
  -H 'content-type: application/json' \
  -d '
  {
    "fields": [
      {
        "type": "string",
        "path": "title"
      }
    ]
  }'

Step 1: Create the common resource (specific account)

curl -X POST \
  https://api.cloud-elements.com/elements/api-v2/accounts/{id}/objects/{objectName}/definitions \
  -H 'authorization: User <USER_SECRET>, Organization <ORGANIZATION_SECRET>' \
  -H 'content-type: application/json' \
  -d '
  {
    "fields": [
      {
        "type": "string",
        "path": "title"
      }
    ]
  }'

Step 2: Map fields to the common resource

curl -X POST \
  https://api.cloud-elements.com/elements/api-v2/accounts/{id}/elements/{keyOrIdtransformations}/{objectName} \
  -H 'authorization: User <USER_SECRET>, Organization <ORGANIZATION_SECRET>' \
  -H 'content-type: application/json' \
  -d '{
    "vendorName": "Contact",
    "level": "account",
    "fields": [
      {
        "path": "title",
        "type":"string",
        "vendorPath": "Title"
      }

  }'

Map Complex Objects

You can use regular expressions as values for the JSON body parameters.

Examples:

{
  "fields": [
    {
      "path": "AppleProductsCount",
      "vendorPath": "Products[*].size()"
    }
  ]
}