Skip to content

VCC

Adapters

A list of available adapters...

Transformers

Adapter Adapter name Description
Image compositor compositor Composites a HTML template with the image asset
Photo flip photo_flip Flips or rotates the image asset
Video add audio video_add_audio Adds a new audio channel to the video asset
Video add overlay video_add_overlay Adds an image overlay to the video asset
Video boomerang video_boomerang Reverses the video asset and stitches it to the end of the original
Video FPS video_fps Changes the frames per second for the video asset
Video GIF video_gif Converts the video asset into a GIF
Video join video_join Joins a video file (in a given position) to the video asset
Video remove audio video_remove_audio Removes the audio channel from the video asset
Video scale video_scale Scales the video asset
Video speed video_speed Changes the speed of a video asset
Video thumbnail video_thumbnail Captures a frame from the video asset as a PNG

Destinations

Adapter Adapter name Description
Giphy giphy Uploads asset to Giphy
OOS oos Uploads asset to Oracle Object Storage
OSS oss Uploads asset to Alibaba Cloud OSS (Object Storage Service)
S3 s3 Uploads asset to S3
Vimeo vimeo Uploads asset to Vimeo
Webhook webhook Uploads asset to a defined URL
YouTube youtube Uploads asset to YouTube

Adapter configurations

It is recommended that these configurations are created in XPKit Portal, not via API requests. Read on if you do need to configure via the VCC API.

Each configuration requires adapter_name and adapter_config fields. You should use one of the adapter names from the tables above. The adapter configs required for the each adapter are described below.

VCC configuration structure

{
    "configuration_name": "",
    "experience_id": "",
    "adapter_name": "" ,
    "adapter_config": {
        "auth": {},
        "defaults" : {}
    }
}

Note: values provided under the adapter_config.defaults field below can be overwritten at runtime using the extras parameters in a task trigger request.

Image compositor

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "profile_data": "(array of strings) - List of `profile` fields required as personalisation tags in the template. Default: ['first_name', 'last_name'].",
            "additional_context": "(object) - key/value pairs of personalisation tags to be used in the template. Example: {'voucher_code': '123-999-abc'}.",
            "profile_id": "(array of strings) - Provide (as the only element in an array) the UUID of the `profile` to use to fetch the profile_data.",
            "html": "(string) - Required - HTML template content (containing any personalisation tags).",
            "width": "(number) - Required - measurement in pixels",
            "height": "(number) - Required - measurement in pixels.",
            "hq_output": "(boolean) - If true the pixel density of the composited image will be doubled (width x 2, height x 2). Only supported with small images (less than 800 pixels in height and width). Default: false",
            "transparency": "(boolean) - If true transparency will be enabled in the composited image. Default: false"
        }
    }
}

Note: to reference fields provided in profile_data and additional_context in the HTML template use tags with double curly brackets (or the email provider's tag syntax). Examples: {{ first_name }} and {{ voucher_code }}. The asset to be composited can be referenced using {{ image_url }}.

Photo flip

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "method": "(string) - one of FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM, ROTATE_90, ROTATE_180, ROTATE_270 or TRANSPOSE. Default: FLIP_LEFT_RIGHT"
        }
    }
}

Video add audio

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "audio_encoder": "(string) - Required. Default: aac",
            "video_encoder": "(string) - Required. Default: h264",
            "audio_file_name": "(string) - Required. VCC `asset`",
            "output_extension": "(string) - Required. Default: mp4",
            "overwrite_video_audio": "(boolean) - true = overwrites existing audio channel, false = adds a new audio channel to video. Default: true"
        }
    }
}

Video add overlay

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "video_encoder": "(string) - Required. Default: h264",
            "overlay_position": "(string) - Required. Default: 0:0",
            "overlay_file_name": "(string) - Required. VCC `asset`",
            "output_extension": "(string) - Required. Default: mp4"
        }
    }
}

Video boomerang

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "repeat": "(number) - transformed file is appended to itself for the number specified. Default: 0"
        }
    }
}

Video FPS

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "fps": "(number) - Required. New FPS setting."
        }
    }
}

Video GIF

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "framerate": "(number) - Required.",
            "width": "(number) - Required - measurement in pixels.",
        }
    }
}

Video join

Note: provide only one JSON object in the video_parts array. Only the first object in the array will be used.

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "output_framerate": "(number) - Required.",
            "output_resolution": "(string) - Required. Default: 1280x720",
            "video_encoder": "(string) - Required. Default: h264",
            "output_extension": "(string) - Required. Default: mp4",
            "aspect": "(string) - Required. Default: 16:9",
            "retain_audio": "(boolean) - set true if both videos have audio and it should be retained. Default: false",
            "video_parts": [
                {
                    "position": "(string) - Required. Enum - A, B. A = After, B = Before. Default: B",
                    "video_file_name": "(string) - Required. VCC `asset`"
                }
            ]
        }
    }
}

Video remove audio

Note: this adapter has no configurable options

{
    "adapter_config": {
        "auth": {},
        "defaults": {}
    }
}

Video scale

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "square_pixels": "(boolean) - Required. Default: false.",
            "new_width": "(number) - Required - measurement in pixels. Default: 1280",
            "new_height": "(number) - Required - measurement in pixels. Default: 720",
        }
    }
}

Video speed

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "multiplier": "(float) - Required. Default 0.5"
        }
    }
}

Video thumbnail

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "time": "(number) - Required - Capture time in seconds. Default: 30",
            "size": "(string) - Required - Thumbnail size. Default: 480x320",
        }
    }
}

Giphy

{
    "adapter_config": {
        "auth": {
            "api_key": "(string) - Required"
        },
        "defaults": {
            "tags": "(string) - Required - Comma separated list of tags.",
            "username": "(string) - Required.",
            "is_hidden": "(boolean) - Required. Default: false",
        }
    }
}

OOS (Oracle Object Storage)

{
    "adapter_config": {
        "auth": {
            "user_ocid": "(string) - Required",
            "namespace": "(string) - Required",
            "tenancy_ocid": "(string) - Required",
            "region": "(string) - Required",
            "key_content": "(string) - Required - Private key contents",
            "fingerprint": "(string) - Required",
            "pass_phrase": "(string) - Pass phrase for the private key (if applicable)",
        },
        "defaults": {
            "file_prefix": "(string)",
            "bucket_name": "(string) - Required.",
            "base_url": "(string)",
            "public": "(boolean) - Ensure your Oracle bucket policy matches what you provide here. Default: false",
            "expires": "(number) - In minutes how long should URLs be valid for (used if public = false). Default: 10"
        }
    }
}

OSS (Alibaba Object Storage Service)

{
    "adapter_config": {
        "auth": {
            "access_key": "(string) - Required",
            "secret_key": "(string) - Required",
        },
        "defaults": {
            "file_prefix": "(string)",
            "bucket_name": "(string) - Required.",
            "bucket_url": "(string)",
            "bucket_endpoint": "(string) - Required. Example: <bucket-name>.oss-cn-hangzhou.aliyuncs.com",
            "force_download": "(boolean) - Default: false",
            "public": "(boolean) - Default: false",
        }
    }
}

S3

{
    "adapter_config": {
        "auth": {
            "access_key": "(string) - Required",
            "secret_key": "(string) - Required",
        },
        "defaults": {
            "file_prefix": "(string)",
            "bucket_name": "(string) - Required.",
            "bucket_url": "(string) - Example: https://<bucket-name>.s3-eu-west-1.amazonaws.com",
            "force_download": "(boolean) - Default: false",
            "public": "(boolean) - Default: false",
        }
    }
}

Vimeo

Note: see the Vimeo adapter in XPKit Portal for instructions on how to authenticate.

{
    "adapter_config": {
        "auth": {
            "client_id": "(string) - Required",
            "client_secret": "(string) - Required",
            "access_token": "(string) - Required"
        },
        "defaults": {
            "privacy_status": "(string) - Enum - anybody, disable, nobody, unlisted. Default: anybody",
            "album_name": "(string) - Required.",
            "album_desc": "(string)",
            "tags": "(string)",
            "default_title": "(string)",
            "default_desc": "(string)"
        }
    }
}

Webhook

{
    "adapter_config": {
        "auth": {},
        "defaults": {
            "endpoint": "(string) - Required",
            "method": "(string) - Required. Enum - PATCH, POST, PUT",
            "file_name": "(string) - Required - Name of the HTTP param that should contain the asset",
            "expected_response_codes": "(array of numbers) - Default: [200, 201]",
            "headers": "(object) - provide as key/value pairs. Example: {'Authorization': 'Basic dGVzdDpwYXNzd29yZDEyMw=='}.",
            "additional_data": "(object) - Additional HTTP params, provide as key/value pairs. Example: {'name': 'VCC generated asset'}."
        }
    }
}

YouTube

Note: see the YouTube adapter in XPKit Portal for instructions on how to authenticate.

{
    "adapter_config": {
        "auth": {
            "secrets": "(string) - Required - JSON - See XPKit Portal for providing this value",
            "token": "(string) - Required - JSON - See XPKit Portal for providing this value"
        },
        "defaults": {
            "title": "(string) - Required.",
            "channel": "(string) - Required.",
            "description": "(string) - Required.",
            "category": "(number) - See XPKit Portal for available options",
            "keywords": "(array of strings) - Required.",
            "privacy_status": "(string) - Enum - private, public, unlisted. Default: private",
            "daily_bulk_limit": "(number) - Required - See XPKit Portal for providing this value. Default: 50",
            "daily_max": "(number) - Required - See XPKit Portal for providing this value. Default: 100",
        }
    }
}