openapi: 3.0.1 info: description: >- Adobe Experience Platform Destination SDK (also referred to as the *Destination Authoring API*) is a suite of configuration APIs that allow you to configure destination integration patterns for Experience Platform to deliver audience and profile data to your endpoint, based on data and authentication formats of your choice. - **Related documentation**: - [Destination SDK overview](http://www.adobe.com/go/destination-sdk-overview-en) - [Getting started](http://www.adobe.com/go/destination-sdk-getting-started-en) - **Visualize API calls with Postman (a free, third-party software)**: - [Destination Authoring API Postman collection on GitHub](https://github.com/adobe/experience-platform-postman-samples/blob/master/apis/experience-platform/Destination%20Authoring%20API.postman_collection.json) - [Video guide for creating the Postman environment](https://video.tv.adobe.com/v/28832) - [Steps for importing environments and collections in Postman](https://learning.postman.com/docs/getting-started/importing-and-exporting-data/) - **API paths**: - PLATFORM Gateway URL: https://platform.adobe.io - Base path for this API: /data/core/activation/authoring - Example of a complete path for making a call to "/destinations": https://platform.adobe.io/data/core/activation/authoring/destinations - **Required headers**: - Your role must include the Destination Authoring access-control permission before you use Destination SDK. - All service calls require the headers `Authorization`, `x-gw-ims-org-id`, and `x-api-key`. For more information on how to obtain these values, see the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en). - All resources in Experience Platform are isolated to specific virtual sandboxes. All requests to Platform APIs require the header `x-sandbox-name` whose value is the all-lowercase name of the sandbox the operation will take place in (for example, "prod"). See the [sandboxes overview](https://adobe.com/go/sandbox-overview-en) for more information. - All requests with a payload in the request body (such as POST, PUT, and PATCH calls) must include the header `Content-Type` with a value of `application/json`. - **API error handling**: - Refer to the Experience Platform API troubleshooting guide for [FAQs](https://experienceleague.adobe.com/docs/experience-platform/landing/troubleshooting.html?lang=en#faq), [API status codes](https://experienceleague.adobe.com/docs/experience-platform/landing/troubleshooting.html?lang=en#api-status-codes), and [request header errors](https://experienceleague.adobe.com/docs/experience-platform/landing/troubleshooting.html?lang=en#request-header-errors). version: "1.0" title: "Destination Authoring API" servers: - url: https://platform.adobe.io/data/core/activation/authoring description: Production server security: - bearerAuth: [] tags: - name: (NEW) Interactive API documentation description: You can now interact with the Experience Platform API endpoints directly from this API reference page. Get your [authentication credentials](https://www.adobe.com/go/platform-api-get-credentials-en) and use the **Try it** functionality in the right rail. Note that by using this functionality, you are making real API calls. Keep this in mind when you interact with production sandboxes. - name: "Destination configurations" description: "Destination configurations contain essential metadata for individual destinations, including their name, category, description, and more. The settings in this configuration also determine how Experience Platform users authenticate to your destination, how it appears in the Experience Platform user interface, and the identities that can be exported to your destination.

For a description of the functionality supported by this endpoint and an example configuration, see the overview on [destination configurations](http://www.adobe.com/go/destination-sdk-destination-configuration-en) in the Destination SDK documentation." - name: "Destination servers and templates" description: "Destination server configurations contain information about the server receiving the messages (the server on your side). Template configurations allow you to configure how to format the exported message to your destination.

For a description of the functionality provided by this endpoint, see the overview on [server](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/server-specs) and [template specs](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/templating-specs) in the Destination SDK documentation." - name: "Audience metadata templates" description: "Audience metadata templates allow you to programmatically manage audiences in your destination.

For a description of when to use this endpoint, see the overview on [audience metadata management](http://www.adobe.com/go/destination-sdk-audience-metadata-en) in the Destination SDK documentation." - name: "Credentials" description: "If a Platform customer does not need to provide any authentication credentials to connect to your destination, a credentials configuration can provide the required credentials instead. Note that you must also select `PLATFORM_AUTHENTICATION` in the destination configuration in order to make use of this endpoint.

For more information when to use this endpoint, see the overview on [authentication configuration](http://www.adobe.com/go/destination-sdk-authentication-configuration-en) in the Destination SDK documentation. " - name: "Destination testing" description: "The Destination Authoring API provides several tools to test file-based and streaming destinations. Read the overview documents for testing [file-based](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/batch-destinations/file-based-destination-testing-overview) and [streaming destinations](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/streaming-destination-testing-overview) to understand the tools available to you." - name: "Destination publishing" description: "After you have configured and tested your destination, you can use the destination publishing endpoint to submit it to Adobe for review and publishing. Read more in the [destination publishing API tutorial](http://www.adobe.com/go/destination-sdk-publish-en)." paths: /destinations: get: tags: - "Destination configurations" summary: "Retrieve a list of destination configurations" description: "You can retrieve a list of all destination configurations for your IMS Organization by making a GET request to the `/destinations` endpoint." operationId: "listDestinations" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' # - in: "body" # name: "body" # description: "Destination Configuration object for a new destination" # required: true # schema: # $ref: "#/components/schemas/destinationAuthoringEntity" responses: "200": description: "A successful response returns HTTP status 200 with a list of destination configurations that you have access to, based on the IMS Org ID and sandbox name that you used. One instanceId corresponds to one destination configuration." x-summary: "Destination configurations retrieved successfully" content: application/json: schema: type: object properties: items: type: array items: $ref: "#/components/schemas/destinationResponse" examples: default: value: items: - instanceId: "b0780cb5-2bb7-4409-bf2c-c625ca818588" createdDate: "2020-10-28T06:14:09.784471Z" lastModifiedDate: "2021-06-28T06:14:09.784471Z" imsOrg: "AC3428435BF324E90A49402A@AdobeOrg" sandboxName: "prod" sandboxId: "r5g6660-c5da-11e9-93d4-6d5fc3a66a8e" name: "Moviestar" description: "Moviestar is a fictional destination, used for this example." status: "TEST" customerAuthenticationConfigurations: - authType: "BEARER" customerDataFields: - name: "endpointsInstance" type: "string" title: "Select Endpoint" description: "Moviestar manages several instances across the globe for REST endpoints that our customers are provisioned for. Select your endpoint in the dropdown list." isRequired: true enum: - "US" - "EU" - "APAC" - "NZ" - name: "customerID" type: "string" title: "Moviestar Customer ID" description: "Your customer ID in the Moviestar destination (e.g. abcdef)." isRequired: true pattern: "^[A-Za-z]+$" uiAttributes: documentationLink: "https://www.adobe.com/go/destinations-moviestar-en" category: "mobile" connectionType: "Server-to-server" frequency: "Streaming" identityNamespaces: external_id: acceptsAttributes: true acceptsCustomNamespaces: true acceptedGlobalNamespaces: Email: {} another_id: acceptsAttributes: true acceptsCustomNamespaces: true segmentMappingConfig: mapExperiencePlatformSegmentName: false mapExperiencePlatformSegmentId: false mapUserInput: false audienceTemplateId: "cbf90a70-96b4-437b-86be-522fbdaabe9c" schemaConfig: profileFields: - name: "a_custom_attribute" title: "a_custom_attribute" description: "This is a fixed attribute on your destination side that customers can map profile attributes to. For example, the phoneNumber value in Experience Platform could be phoneNo on your side." type: "string" isRequired: false readOnly: false hidden: false profileRequired: true segmentRequired: true identityRequired: true aggregation: aggregationType: "BEST_EFFORT" bestEffortAggregation: maxUsersPerRequest: 10 splitUserById: false destinationDelivery: - authenticationRule: "CUSTOMER_AUTHENTICATION" destinationServerId: "9c77000a-4559-40ae-9119-a04324a3ecd4" destConfigId: "410631b8-f6b3-4b7c-82da-7998aa3f327c" backfillHistoricalProfileData: true "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Access forbidden" # security: # - dest_auth: # - "write:dest" # - "read:dest" post: tags: - "Destination configurations" summary: "Create a destination configuration" description: "You can create a new destination configuration by making a POST request to the `/destinations` endpoint.

The payload below includes all parameters for file-based destinations accepted by the `/authoring/destinations` endpoint. Note that you do not have to add all parameters to your API call, and that the payload is customizable, according to your API requirements." operationId: "createDestination" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: description: "Destination configuration object for a new destination. The request creates an Amazon S3 destination configuration, configured by the parameters provided in the payload. The payload below includes all parameters for file-based destinations accepted by the `/authoring/destinations` endpoint. Note that you do not have to add all parameters to your API call, and that the payload is customizable, according to your API requirements.

Refer to the Destination SDK documentation for an example of a destination configuration for a [file-based](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/guides/configure-file-based-destination-instructions#create-destination-configuration) and a [streaming destination](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/guides/configure-destination-instructions#create-destination-configuration)." required: true content: application/json: schema: $ref: "#/components/schemas/destination" responses: "200": description: "A successful response returns HTTP status 200 with details of your newly created destination configuration." x-summary: "Destination configuration created" content: application/json: schema: $ref: "#/components/schemas/destinationResponse" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect payload format" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" /destinations/{INSTANCE_ID}: get: tags: - "Destination configurations" summary: "Retrieve a destination configuration" description: "You can retrieve detailed information about a specific destination configuration by making a GET request to the `/destinations` endpoint and providing the ID of the destination configuration you want to retrieve." operationId: "retrieveDestination" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the destination configuration that you want to retrieve." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 with the details of the destination configuration corresponding to the INSTANCE_ID provided in the call." x-summary: "Destination configuration retrieved" content: application/json: schema: type: "object" properties: items: type: "array" items: $ref: "#/components/schemas/destinationResponse" examples: default: value: items: - instanceId: "b0780cb5-2bb7-4409-bf2c-c625ca818588" createdDate: "2020-10-28T06:14:09.784471Z" lastModifiedDate: "2021-06-28T06:14:09.784471Z" imsOrg: "AC3428435BF324E90A49402A@AdobeOrg" sandboxName: "prod" sandboxId: "r5g6660-c5da-11e9-93d4-6d5fc3a66a8e" name: "Moviestar" description: "Moviestar is a fictional destination, used for this example." status: "TEST" customerAuthenticationConfigurations: - authType: "BEARER" customerDataFields: - name: "endpointsInstance" type: "string" title: "Select Endpoint" description: "Moviestar manages several instances across the globe for REST endpoints that our customers are provisioned for. Select your endpoint in the dropdown list." isRequired: true enum: - "US" - "EU" - "APAC" - "NZ" - name: "customerID" type: "string" title: "Moviestar Customer ID" description: "Your customer ID in the Moviestar destination (e.g. abcdef)." isRequired: true pattern: "^[A-Za-z]+$" uiAttributes: documentationLink: "https://www.adobe.com/go/destinations-moviestar-en" category: "mobile" connectionType: "Server-to-server" frequency: "Streaming" identityNamespaces: external_id: acceptsAttributes: true acceptsCustomNamespaces: true acceptedGlobalNamespaces: Email: {} another_id: acceptsAttributes: true acceptsCustomNamespaces: true segmentMappingConfig: mapExperiencePlatformSegmentName: false mapExperiencePlatformSegmentId: false mapUserInput: false audienceTemplateId: "cbf90a70-96b4-437b-86be-522fbdaabe9c" schemaConfig: profileFields: - name: "a_custom_attribute" title: "a_custom_attribute" description: "This is a fixed attribute on your destination side that customers can map profile attributes to. For example, the phoneNumber value in Experience Platform could be phoneNo on your side." type: "string" isRequired: false readOnly: false hidden: false profileRequired: true segmentRequired: true identityRequired: true aggregation: aggregationType: "BEST_EFFORT" bestEffortAggregation: maxUsersPerRequest: 10 splitUserById: false destinationDelivery: - authenticationRule: "CUSTOMER_AUTHENTICATION" destinationServerId: "9c77000a-4559-40ae-9119-a04324a3ecd4" destConfigId: "410631b8-f6b3-4b7c-82da-7998aa3f327c" backfillHistoricalProfileData: true "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to formatting error" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct destination configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" put: tags: - "Destination configurations" summary: "Update a destination configuration" description: "You can update an existing destination configuration by making a PUT request to the `/destinations` endpoint with the updated payload.

To obtain an existing destination configuration and its corresponding `{INSTANCE_ID}`, see [Retrieve a destination configuration](#operation/retrieveDestination)." operationId: "updateDestination" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the destination configuration that you want to update. To obtain an existing destination configuration and its corresponding `{INSTANCE_ID}`, see [Retrieve a destination configuration](#operation/retrieveDestination)." required: true schema: type: "string" requestBody: description: "Destination configuration object to update existing destination. The request updates the destination configuration with the parameters provided in the payload. See an example of a destination configuration for a [file-based](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/guides/configure-file-based-destination-instructions#create-destination-configuration) and a [streaming destination](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/guides/configure-destination-instructions#create-destination-configuration)." required: true content: application/json: schema: $ref: "#/components/schemas/destination" responses: "200": description: "A successful response returns HTTP status 200 with the details of your updated destination configuration." x-summary: "Destination configuration updated" content: application/json: schema: $ref: "#/components/schemas/destinationResponse" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct destination configuration ID before trying again." x-summary: "Resource not found" # "405": # description: "Validation exception" # security: # - dest_auth: # - "write:dest" # - "read:dest" delete: tags: - "Destination configurations" summary: "Delete a destination configuration" description: "You can delete an existing destination configuration by making a DELETE request to the `/destinations` endpoint with the `{INSTANCE_ID}` of the destination configuration that you want to delete.

To obtain an existing destination configuration and its corresponding `{INSTANCE_ID}`, see [Retrieve a destination configuration](#operation/retrieveDestination)." operationId: "deleteDestination" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the destination configuration you want to delete." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 along with an empty HTTP response." x-summary: "Resource deleted successfully" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct destination configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" /destination-servers: get: tags: - "Destination servers and templates" summary: "Retrieve a list of destination server configurations" description: "You can retrieve a list of all destination server configurations for your IMS Organization by making a GET request to the `/destination-servers` endpoint." operationId: "listDestinationServer" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' # - in: "body" # name: "body" # description: "Destination Configuration object for a new destination" # required: true # schema: # $ref: "#/components/schemas/serverEntity" responses: "200": description: "A successful response returns HTTP status 200 with a list of destination server configurations that you have access to, based on the IMS Org ID and sandbox name that you used. One instanceId corresponds to one destination server." x-summary: "Destination server configurations retrieved" content: application/json: schema: $ref: "#/components/schemas/destinationServerListResponse" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" # security: # - dest_auth: # - "write:dest" # - "read:dest" post: tags: - "Destination servers and templates" summary: "Create a destination server configuration" description: "You can create a new destination server configuration by making a POST request to the `/destination-servers` endpoint." operationId: "createDestinationServer" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: required: true content: application/json: schema: oneOf: - $ref: "#/components/schemas/Streaming_Destination_Server_Request" - $ref: "#/components/schemas/Amazon_S3_Destination_Server_Request" - $ref: "#/components/schemas/SFTP_Destination_Server_Request" - $ref: "#/components/schemas/Azure_Blob_Destination_Server_Request" - $ref: "#/components/schemas/Azure_Data_Lake_Storage_Gen2_Destination_Server_Request" - $ref: "#/components/schemas/Data_Landing_Zone_Destination_Server_Request" - $ref: "#/components/schemas/Google_Cloud_Storage_Destination_Server_Request" examples: Real-time (streaming): summary: "Real-time (streaming) destination server" value: name: "Moviestar destination server" destinationServerType: "URL_BASED" urlBasedDestination: url: templatingStrategy: "PEBBLE_V1" value: "https://api.moviestar.com/data/{{customerData.region}}/items" httpTemplate: httpMethod: "POST" requestBody: templatingStrategy: "PEBBLE_V1" value: "{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if input.profile.segmentMembership.ups is not empty %} , \"AEPSegments\": { \"add\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"realized\" or segment.value.status == \"existing\" %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ], \"remove\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"exited\" %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }" contentType: "application/json" Amazon S3: summary: "Amazon S3 destination server" value: name: "S3 destination" destinationServerType: "FILE_BASED_S3" fileBasedS3Destination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" SFTP: summary: "SFTP destination server" value: name: "File-based SFTP destination server" destinationServerType: "FILE_BASED_SFTP" fileBasedSFTPDestination: rootDirectory: templatingStrategy: "PEBBLE_V1" value: "{{customerData.rootDirectory}}" hostName: templatingStrategy: "PEBBLE_V1" value: "{{customerData.hostName}}" port: 22 encryptionMode: "PGP" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Data Lake Storage Gen2: summary: "Azure Data Lake Storage Gen2 destination server" value: name: "ADLS destination server" destinationServerType: "FILE_BASED_ADLS_GEN2" fileBasedAdlsGen2Destination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Blob Storage: summary: "Azure Blob Storage destination server" value: name: "Blob destination server" destinationServerType: "FILE_BASED_AZURE_BLOB" fileBasedAzureBlobDestination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" container: templatingStrategy: "PEBBLE_V1" value: "{{customerData.container}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Data Landing Zone: summary: "Data Landing Zone destination server" value: name: "DLZ destination server" destinationServerType: "FILE_BASED_DLZ" fileBasedDlzDestination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" useCase: "dlz_destination" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Google Cloud Storage: summary: "Google Cloud Storage destination server" value: name: "Google Cloud Storage Server" destinationServerType: "FILE_BASED_GOOGLE_CLOUD" fileBasedGoogleCloudStorageDestination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" responses: "200": description: "A successful response returns HTTP status 200 with details of your newly created destination server configuration." x-summary: "Destination server configuration created" content: application/json: schema: $ref: "#/components/schemas/destinationServerResponse" examples: Real-time (streaming): summary: "Real-time (streaming) destination server response" value: instanceId: "9c77000a-4559-40ae-9119-a04324a3ecd4" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "Moviestar destination server" destinationServerType: "URL_BASED" urlBasedDestination: url: templatingStrategy: "PEBBLE_V1" value: "https://api.moviestar.com/data/{{customerData.region}}/items" httpTemplate: httpMethod: "POST" requestBody: templatingStrategy: "PEBBLE_V1" value: "{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if input.profile.segmentMembership.ups is not empty %} , \"AEPSegments\": { \"add\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"realized\" or segment.value.status == \"existing\" %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ], \"remove\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"exited\" %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }" contentType: "application/json" Amazon S3: summary: "Amazon S3 destination server response" value: instanceId: "e2d82550-3e99-4a01-b8e1-f90972ae61ce" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "S3 destination" destinationServerType: "FILE_BASED_S3" fileBasedS3Destination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" SFTP: summary: "SFTP destination server response" value: instanceId: "a1b2c3d4-5678-90ab-cdef-1234567890ab" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "File-based SFTP destination server" destinationServerType: "FILE_BASED_SFTP" fileBasedSFTPDestination: rootDirectory: templatingStrategy: "PEBBLE_V1" value: "{{customerData.rootDirectory}}" hostName: templatingStrategy: "PEBBLE_V1" value: "{{customerData.hostName}}" port: 22 encryptionMode: "PGP" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Data Lake Storage Gen2: summary: "Azure Data Lake Storage Gen2 destination server response" value: instanceId: "b2c3d4e5-6789-01bc-defg-234567890bcd" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "ADLS destination server" destinationServerType: "FILE_BASED_ADLS_GEN2" fileBasedAdlsGen2Destination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Blob Storage: summary: "Azure Blob Storage destination server response" value: instanceId: "c3d4e5f6-7890-12cd-efgh-34567890cdef" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "Blob destination server" destinationServerType: "FILE_BASED_AZURE_BLOB" fileBasedAzureBlobDestination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" container: templatingStrategy: "PEBBLE_V1" value: "{{customerData.container}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Data Landing Zone: summary: "Data Landing Zone destination server response" value: instanceId: "d4e5f6g7-8901-23de-fghi-4567890defg1" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "DLZ destination server" destinationServerType: "FILE_BASED_DLZ" fileBasedDlzDestination: useCase: "dlz_destination" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Google Cloud Storage: summary: "Google Cloud Storage destination server response" value: instanceId: "e5f6g7h8-9012-34ef-ghij-567890efgh12" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "Google Cloud Storage Server" destinationServerType: "FILE_BASED_GOOGLE_CLOUD" fileBasedGoogleCloudStorageDestination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to formatting error" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" /destination-servers/{INSTANCE_ID}: get: tags: - "Destination servers and templates" summary: "Retrieve a destination server configuration" description: "You can retrieve detailed information about a specific destination server configuration by making a GET request to the `/destination-servers` endpoint and providing the ID of the destination server configuration you want to retrieve." operationId: "retrieveDestinationServer" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the destination server configuration you want to retrieve." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 with the configuration of the destination server corresponding to the INSTANCE_ID you provided." x-summary: "Destination server configuration retrieved" content: application/json: schema: $ref: "#/components/schemas/destinationServerListResponse" examples: Real-time (streaming): summary: "Real-time (streaming) destination server response" value: items: - instanceId: "9c77000a-4559-40ae-9119-a04324a3ecd4" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "Moviestar destination server" destinationServerType: "URL_BASED" urlBasedDestination: url: templatingStrategy: "PEBBLE_V1" value: "https://api.moviestar.com/data/{{customerData.region}}/items" httpTemplate: httpMethod: "POST" requestBody: templatingStrategy: "PEBBLE_V1" value: "{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if input.profile.segmentMembership.ups is not empty %} , \"AEPSegments\": { \"add\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"realized\" or segment.value.status == \"existing\" %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ], \"remove\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"exited\" %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }" contentType: "application/json" Amazon S3: summary: "Amazon S3 destination server response" value: items: - instanceId: "e2d82550-3e99-4a01-b8e1-f90972ae61ce" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "S3 destination" destinationServerType: "FILE_BASED_S3" fileBasedS3Destination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" SFTP: summary: "SFTP destination server response" value: items: - instanceId: "a1b2c3d4-5678-90ab-cdef-1234567890ab" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "File-based SFTP destination server" destinationServerType: "FILE_BASED_SFTP" fileBasedSFTPDestination: rootDirectory: templatingStrategy: "PEBBLE_V1" value: "{{customerData.rootDirectory}}" hostName: templatingStrategy: "PEBBLE_V1" value: "{{customerData.hostName}}" port: 22 encryptionMode: "PGP" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Data Lake Storage Gen2: summary: "Azure Data Lake Storage Gen2 destination server response" value: items: - instanceId: "b2c3d4e5-6789-01bc-defg-234567890bcd" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "ADLS destination server" destinationServerType: "FILE_BASED_ADLS_GEN2" fileBasedAdlsGen2Destination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Blob Storage: summary: "Azure Blob Storage destination server response" value: items: - instanceId: "c3d4e5f6-7890-12cd-efgh-34567890cdef" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "Blob destination server" destinationServerType: "FILE_BASED_AZURE_BLOB" fileBasedAzureBlobDestination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" container: templatingStrategy: "PEBBLE_V1" value: "{{customerData.container}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Data Landing Zone: summary: "Data Landing Zone destination server response" value: items: - instanceId: "d4e5f6g7-8901-23de-fghi-4567890defg1" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "DLZ destination server" destinationServerType: "FILE_BASED_DLZ" fileBasedDlzDestination: useCase: "dlz_destination" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Google Cloud Storage: summary: "Google Cloud Storage destination server response" value: items: - instanceId: "e5f6g7h8-9012-34ef-ghij-567890efgh12" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-28T23:01:56.925824Z" name: "Google Cloud Storage Server" destinationServerType: "FILE_BASED_GOOGLE_CLOUD" fileBasedGoogleCloudStorageDestination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct destination server configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" put: tags: - "Destination servers and templates" summary: "Update a destination server configuration" description: "You can update an existing destination server configuration by making a PUT request to the `/destination-servers` endpoint with the updated payload." operationId: "updateDestinationServer" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the destination server configuration that you want to update. To obtain an existing destination server configuration and its corresponding `{INSTANCE_ID}`, see [Retrieve a destination server configuration](#operation/retrieveDestinationServer)." required: true schema: type: "string" requestBody: required: true content: application/json: schema: oneOf: - $ref: "#/components/schemas/Streaming_Destination_Server_Request" - $ref: "#/components/schemas/Amazon_S3_Destination_Server_Request" - $ref: "#/components/schemas/SFTP_Destination_Server_Request" - $ref: "#/components/schemas/Azure_Blob_Destination_Server_Request" - $ref: "#/components/schemas/Azure_Data_Lake_Storage_Gen2_Destination_Server_Request" - $ref: "#/components/schemas/Data_Landing_Zone_Destination_Server_Request" - $ref: "#/components/schemas/Google_Cloud_Storage_Destination_Server_Request" examples: Real-time (streaming): summary: "Real-time (streaming) destination server" value: name: "Moviestar destination server" destinationServerType: "URL_BASED" urlBasedDestination: url: templatingStrategy: "PEBBLE_V1" value: "https://api.moviestar.com/data/{{customerData.region}}/items" httpTemplate: httpMethod: "POST" requestBody: templatingStrategy: "PEBBLE_V1" value: "{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if input.profile.segmentMembership.ups is not empty %} , \"AEPSegments\": { \"add\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"realized\" or segment.value.status == \"existing\" %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ], \"remove\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"exited\" %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }" contentType: "application/json" Amazon S3: summary: "Amazon S3 destination server" value: name: "S3 destination" destinationServerType: "FILE_BASED_S3" fileBasedS3Destination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" SFTP: summary: "SFTP destination server" value: name: "File-based SFTP destination server" destinationServerType: "FILE_BASED_SFTP" fileBasedSFTPDestination: rootDirectory: templatingStrategy: "PEBBLE_V1" value: "{{customerData.rootDirectory}}" hostName: templatingStrategy: "PEBBLE_V1" value: "{{customerData.hostName}}" port: 22 encryptionMode: "PGP" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Data Lake Storage Gen2: summary: "Azure Data Lake Storage Gen2 destination server" value: name: "ADLS destination server" destinationServerType: "FILE_BASED_ADLS_GEN2" fileBasedAdlsGen2Destination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Blob Storage: summary: "Azure Blob Storage destination server" value: name: "Blob destination server" destinationServerType: "FILE_BASED_AZURE_BLOB" fileBasedAzureBlobDestination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" container: templatingStrategy: "PEBBLE_V1" value: "{{customerData.container}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Data Landing Zone: summary: "Data Landing Zone destination server" value: name: "DLZ destination server" destinationServerType: "FILE_BASED_DLZ" fileBasedDlzDestination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" useCase: "dlz_destination" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Google Cloud Storage: summary: "Google Cloud Storage destination server" value: name: "Google Cloud Storage Server" destinationServerType: "FILE_BASED_GOOGLE_CLOUD" fileBasedGoogleCloudStorageDestination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" responses: "200": description: "A successful response returns HTTP status 200 with the details of your updated destination server configuration." x-summary: "Destination server configuration updated" content: application/json: schema: $ref: "#/components/schemas/destinationServerResponse" examples: Real-time (streaming): summary: "Real-time (streaming) destination server response" value: instanceId: "9c77000a-4559-40ae-9119-a04324a3ecd4" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-29T14:32:10.456789Z" name: "Moviestar destination server" destinationServerType: "URL_BASED" urlBasedDestination: url: templatingStrategy: "PEBBLE_V1" value: "https://api.moviestar.com/data/{{customerData.region}}/items" httpTemplate: httpMethod: "POST" requestBody: templatingStrategy: "PEBBLE_V1" value: "{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if input.profile.segmentMembership.ups is not empty %} , \"AEPSegments\": { \"add\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"realized\" or segment.value.status == \"existing\" %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ], \"remove\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"exited\" %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }" contentType: "application/json" Amazon S3: summary: "Amazon S3 destination server response" value: instanceId: "e2d82550-3e99-4a01-b8e1-f90972ae61ce" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-29T14:32:10.456789Z" name: "S3 destination" destinationServerType: "FILE_BASED_S3" fileBasedS3Destination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" SFTP: summary: "SFTP destination server response" value: instanceId: "a1b2c3d4-5678-90ab-cdef-1234567890ab" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-29T14:32:10.456789Z" name: "File-based SFTP destination server" destinationServerType: "FILE_BASED_SFTP" fileBasedSFTPDestination: rootDirectory: templatingStrategy: "PEBBLE_V1" value: "{{customerData.rootDirectory}}" hostName: templatingStrategy: "PEBBLE_V1" value: "{{customerData.hostName}}" port: 22 encryptionMode: "PGP" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Data Lake Storage Gen2: summary: "Azure Data Lake Storage Gen2 destination server response" value: instanceId: "b2c3d4e5-6789-01bc-defg-234567890bcd" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-29T14:32:10.456789Z" name: "ADLS destination server" destinationServerType: "FILE_BASED_ADLS_GEN2" fileBasedAdlsGen2Destination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Azure Blob Storage: summary: "Azure Blob Storage destination server response" value: instanceId: "c3d4e5f6-7890-12cd-efgh-34567890cdef" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-29T14:32:10.456789Z" name: "Blob destination server" destinationServerType: "FILE_BASED_AZURE_BLOB" fileBasedAzureBlobDestination: path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" container: templatingStrategy: "PEBBLE_V1" value: "{{customerData.container}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Data Landing Zone: summary: "Data Landing Zone destination server response" value: instanceId: "d4e5f6g7-8901-23de-fghi-4567890defg1" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-29T14:32:10.456789Z" name: "DLZ destination server" destinationServerType: "FILE_BASED_DLZ" fileBasedDlzDestination: useCase: "dlz_destination" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" Google Cloud Storage: summary: "Google Cloud Storage destination server response" value: instanceId: "e5f6g7h8-9012-34ef-ghij-567890efgh12" createdDate: "2020-09-28T23:01:56.925824Z" lastModifiedDate: "2020-09-29T14:32:10.456789Z" name: "Google Cloud Storage Server" destinationServerType: "FILE_BASED_GOOGLE_CLOUD" fileBasedGoogleCloudStorageDestination: bucket: templatingStrategy: "PEBBLE_V1" value: "{{customerData.bucket}}" path: templatingStrategy: "PEBBLE_V1" value: "{{customerData.path}}" fileConfigurations: compression: templatingStrategy: "PEBBLE_V1" value: "{{customerData.compression}}" fileType: templatingStrategy: "PEBBLE_V1" value: "{{customerData.fileType}}" csvOptions: quote: templatingStrategy: "NONE" value: "\"" quoteAll: templatingStrategy: "NONE" value: "false" escape: templatingStrategy: "NONE" value: "\\" escapeQuotes: templatingStrategy: "NONE" value: "true" header: templatingStrategy: "NONE" value: "true" ignoreLeadingWhiteSpace: templatingStrategy: "NONE" value: "true" ignoreTrailingWhiteSpace: templatingStrategy: "NONE" value: "true" nullValue: templatingStrategy: "NONE" value: "" dateFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd" timestampFormat: templatingStrategy: "NONE" value: "yyyy-MM-dd'T':mm:ss[.SSS][XXX]" charToEscapeQuoteEscaping: templatingStrategy: "NONE" value: "\\" emptyValue: templatingStrategy: "NONE" value: "" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct destination server configuration ID before trying again." x-summary: "Resource not found" # "405": # description: "Validation exception" # security: # - dest_auth: # - "write:dest" # - "read:dest" delete: tags: - "Destination servers and templates" summary: "Delete a destination server configuration" description: "You can delete an existing destination server configuration by making a DELETE request to the `/destination-servers` endpoint with the `{INSTANCE_ID}` of the destination server configuration that you want to delete.

To obtain an existing destination server configuration and its corresponding `{INSTANCE_ID}`, see [Retrieve a destination server configuration](#operation/retrieveDestinationServer)." operationId: "deleteDestinationServer" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the destination server configuration you want to delete." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 along with an empty HTTP response." x-summary: "Resource deleted successfully" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct destination server configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" /audience-templates: get: tags: - "Audience metadata templates" summary: "Retrieve all audience templates" description: "You can retrieve a list of all audience templates for your IMS Organization by making a `GET` request to the `/authoring/audience-templates` endpoint." operationId: "listAudienceTemplate" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' responses: "200": description: "A successful response returns HTTP status 200 with a list of audience templates that you have access to, based on the IMS Org ID and sandbox name that you used. One instanceId corresponds to one audience template." x-summary: "Audience templates retrieved" content: application/json: schema: $ref: "#/components/schemas/audienceTemplateResponse" examples: default: value: instanceId: "34ab9cc2-2536-44a5-9dc5-b2fea60b3bd6" createdDate: "2021-07-26T19:30:52.012490Z" lastModifiedDate: "2021-07-27T21:25:42.763478Z" metadataTemplate: create: url: "https://api.moviestar.com/v1/adaccounts/{{customerData.accountId}}/segments" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{oauth2ServiceAccessToken}}" header: "Authorization" requestBody: json: segments: - name: "{{segment.name}}" description: "{{segment.description}}" source_type: "FIRST_PARTY" ad_account_id: "{{customerData.accountId}}" retention_in_days: 180 responseFields: - value: "{{body.segments[0].segment.id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" update: url: "https://adsapi.moviestar.com/v1/adaccounts/{{customerData.accountId}}/segments" httpMethod: "PUT" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{oauth2ServiceAccessToken}}" header: "Authorization" requestBody: json: segments: - id: "{{segment.alias}}" name: "{{segment.name}}" description: "{{segment.description}}" responseFields: - value: "{{body.segments[0].segment.id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" delete: url: "https://adsapi.moviestar.com/v1/segments/{{segment.alias}}" httpMethod: "DELETE" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{oauth2ServiceAccessToken}}" header: "Authorization" responseErrorFields: - value: "{{root}}" name: "message" name: "Moviestar destination audience template - Example 1" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Access forbidden" # security: # - dest_auth: # - "write:dest" # - "read:dest" post: tags: - "Audience metadata templates" summary: "Create an audience template" description: "You can create a new audience template by making a `POST` request to the `/authoring/audience-templates` endpoint.

For some destinations created using Destination SDK, you need to create an audience metadata configuration to programmatically create, update, or delete audience metadata in the destination.

The request creates a new audience template, configured by the parameters provided in the payload. The payload includes all parameters accepted by the `/authoring/audience-templates` endpoint. Note that you do not have to add all parameters on the call and that the template is customizable, according to your API requirements." operationId: "createAudienceTemplate" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: description: "The following request creates a new audience template, configured by the parameters provided in the payload. The payload below includes all parameters accepted by the `/authoring/audience-templates` endpoint. Note that you do not have to add all parameters on the call and that the template is customizable, according to your API requirements.

Example payload with a Test Webhook Audience Template including create, update, delete operations for both audiences and destinations, plus validations. See the full example in the [create audience template documentation](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/audience-template-api/create-audience-template)." required: true content: application/json: schema: $ref: "#/components/schemas/audienceTemplate" examples: default: value: metadataTemplate: name: "Test Webhook Audience Template" create: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/segments" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{segment.name}}" type: "segment" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" segmentEnrichmentAttributes: "{% set columns = [] %}{% for atr in segmentEnrichmentAttributes %}{% set columns = columns|merge([atr.source]) %}{% endfor %}{{ columns | toJson }}" external_id: "{{segment.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" update: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/segments/{{segment.alias}}" httpMethod: "PUT" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{segment.name}}" type: "segment" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" segmentEnrichmentAttributes: "{% set columns = [] %}{% for atr in segmentEnrichmentAttributes %}{% set columns = columns|merge([atr.source]) %}{% endfor %}{{ columns | toJson }}" external_id: "{{segment.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" delete: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/segments/{{segment.alias}}" httpMethod: "DELETE" headers: - value: "Bearer {{authData.token}}" header: "Authorization" responseErrorFields: - value: "{{root}}" name: "message" createDestination: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/createDestination" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{destination.name}}" type: "destination" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" enrichmentAttributes: "{{destination.enrichmentAttributes}}" external_id: "{{destination.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" updateDestination: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/updateDestination" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{destination.name}}" type: "destination" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" enrichmentAttributes: "{{destination.enrichmentAttributes}}" external_id: "{{destination.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" deleteDestination: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/deleteDestination" httpMethod: "DELETE" headers: - value: "Bearer {{authData.token}}" header: "Authorization" responseErrorFields: - value: "{{root}}" name: "message" validations: - field: "string" regex: "string" responses: "200": description: "A successful response returns HTTP status 200 with details of your newly created audience template." x-summary: "Audience template created" content: application/json: schema: $ref: "#/components/schemas/audienceTemplateResponse" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect payload formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" /audience-templates/{INSTANCE_ID}: get: tags: - "Audience metadata templates" summary: "Retrieve a specific audience template" description: "You can retrieve detailed information about a specific audience template by making a GET request to the `/audience-templates` endpoint and providing the ID of the audience template you want to retrieve." operationId: "retrieveAudienceTemplate" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the audience template you want to retrieve." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 with the details of the audience template corresponding to the INSTANCE_ID provided on the call." x-summary: "Audience template configuration retrieved" content: application/json: schema: $ref: "#/components/schemas/audienceTemplateResponse" examples: default: value: instanceId: "34ab9cc2-2536-44a5-9dc5-b2fea60b3bd6" createdDate: "2021-07-26T19:30:52.012490Z" lastModifiedDate: "2021-07-27T21:25:42.763478Z" metadataTemplate: create: url: "https://api.moviestar.com/v1/adaccounts/{{customerData.accountId}}/segments" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{oauth2ServiceAccessToken}}" header: "Authorization" requestBody: json: segments: - name: "{{segment.name}}" description: "{{segment.description}}" source_type: "FIRST_PARTY" ad_account_id: "{{customerData.accountId}}" retention_in_days: 180 responseFields: - value: "{{body.segments[0].segment.id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" update: url: "https://adsapi.moviestar.com/v1/adaccounts/{{customerData.accountId}}/segments" httpMethod: "PUT" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{oauth2ServiceAccessToken}}" header: "Authorization" requestBody: json: segments: - id: "{{segment.alias}}" name: "{{segment.name}}" description: "{{segment.description}}" responseFields: - value: "{{body.segments[0].segment.id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" delete: url: "https://adsapi.moviestar.com/v1/segments/{{segment.alias}}" httpMethod: "DELETE" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{oauth2ServiceAccessToken}}" header: "Authorization" responseErrorFields: - value: "{{root}}" name: "message" name: "Moviestar destination audience template - Example 1" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct audience template configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" put: tags: - "Audience metadata templates" summary: "Update an audience template" description: "You can update an existing audience template by making a `PUT` request to the `/authoring/audience-templates` endpoint with the updated payload.

To obtain an existing audience template and its corresponding `{INSTANCE_ID}`, see [Retrieve an audience template](#operation/retrieveAudienceTemplate).

The request updates an existing audience metadata template, configured by the parameters provided in the payload." operationId: "updateAudienceTemplate" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the audience template that you want to update. To obtain an existing audience template and its corresponding INSTANCE_ID, see [Retrieve a audience template](#operation/retrieveAudienceTemplate)." required: true schema: type: "string" requestBody: description: "The following request updates an existing audience metadata template, configured by the parameters provided in the payload. See the full example in the [update audience template documentation](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/audience-template-api/update-audience-template)." required: true content: application/json: schema: $ref: "#/components/schemas/audienceTemplate" examples: default: value: metadataTemplate: name: "Test Webhook Audience Template" create: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/segments" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{segment.name}}" type: "segment" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" segmentEnrichmentAttributes: "{% set columns = [] %}{% for atr in segmentEnrichmentAttributes %}{% set columns = columns|merge([atr.source]) %}{% endfor %}{{ columns | toJson }}" external_id: "{{segment.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" update: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/segments/{{segment.alias}}" httpMethod: "PUT" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{segment.name}}" type: "segment" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" segmentEnrichmentAttributes: "{% set columns = [] %}{% for atr in segmentEnrichmentAttributes %}{% set columns = columns|merge([atr.source]) %}{% endfor %}{{ columns | toJson }}" external_id: "{{segment.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" delete: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/segments/{{segment.alias}}" httpMethod: "DELETE" headers: - value: "Bearer {{authData.token}}" header: "Authorization" responseErrorFields: - value: "{{root}}" name: "message" createDestination: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/createDestination" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{destination.name}}" type: "destination" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" enrichmentAttributes: "{{destination.enrichmentAttributes}}" external_id: "{{destination.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" updateDestination: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/updateDestination" httpMethod: "POST" headers: - value: "application/json" header: "Content-Type" - value: "Bearer {{authData.token}}" header: "Authorization" requestBody: json: name: "{{destination.name}}" type: "destination" metadata: org_id: "{{destination.imsOrgId}}" sandbox: "{{destination.sandboxName}}" destination_id: "{{destination.id}}" destination_name: "{{destination.name}}" enrichmentAttributes: "{{destination.enrichmentAttributes}}" external_id: "{{destination.id}}" responseFields: - value: "{{headers.X-Request-Id}}" name: "externalAudienceId" responseErrorFields: - value: "{{root}}" name: "message" deleteDestination: url: "https://your-webhook-site/0bd222fa-8ae2-433b-8f0e-f2ce137b0ee4/{{customerData.customerID}}/deleteDestination" httpMethod: "DELETE" headers: - value: "Bearer {{authData.token}}" header: "Authorization" responseErrorFields: - value: "{{root}}" name: "message" responses: "200": description: "A successful response returns HTTP status 200 with details of your updated audience template." x-summary: "Audience template updated" content: application/json: schema: $ref: "#/components/schemas/audienceTemplateResponse" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct audience template configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" delete: tags: - "Audience metadata templates" summary: "Delete an audience template" description: "You can delete an existing audience template by making a `DELETE` request to the `/authoring/audience-templates` endpoint with the `{INSTANCE_ID}` of the audience template that you want to delete.

To obtain an existing audience template and its corresponding `{INSTANCE_ID}`, see [Retrieve an audience template](#operation/retrieveAudienceTemplate)." operationId: "deleteAudienceTemplate" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the audience template you want to delete." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 along with an empty HTTP response." x-summary: "Resource deleted successfully" '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct audience template configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" /credentials: get: tags: - "Credentials" summary: "Retrieve all credential configurations" description: "You can retrieve a list of all existing credential configuration for your IMS Organization by making a `GET` request to the `/authoring/credentials` endpoint." operationId: "listCredential" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' # - in: "body" # name: "body" # description: "Destination Configuration object for a new destination" # required: true # schema: # $ref: "#/components/schemas/serverEntity" responses: "200": description: "A successful response returns HTTP status 200 with a list of credential configurations that you have access to, based on the IMS Org ID and sandbox name that you used. One instanceId corresponds to one credential configuration." x-summary: "Credential configurations retrieved" content: application/json: schema: type: object properties: items: type: array items: $ref: "#/components/schemas/credentialResponse" examples: default: value: items: - instanceId: "n55affa0-3747-4030-895d-1d1236bb3680" createdDate: "2021-06-07T06:41:48.641943Z" lastModifiedDate: "2021-06-07T06:41:48.641943Z" type: "s3Authentication" name: "yourdestination" s3Authentication: accessId: "string" secretKey: "string" - instanceId: "a25bffa0-3127-4030-895d-1d1236bb3680" createdDate: "2022-06-07T06:41:48.641943Z" lastModifiedDate: "2022-08-07T06:41:48.641943Z" type: "basic" name: "yourdestination" basicAuthentication: url: "string" username: "string" password: "string" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" # security: # - dest_auth: # - "write:dest" # - "read:dest" post: tags: - "Credentials" summary: "Create a credential configuration" description: "You can create a new credentials configuration by making a `POST` request to the `/authoring/credentials` endpoint.

The following requests create new credential configurations, defined by the parameters provided in the payload.

See the examples for Basic, Amazon S3, SSH, Azure Data Lake Storage, and Azure Blob Storage credential types in the [create credential configuration documentation](https://experienceleague.adobe.com/docs/experience-platform/destinations/destination-sdk/credentials-api/create-credential-configuration.html)." operationId: "createCredential" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: description: "The following requests create new credential configurations, defined by the parameters provided in the payload. Examples include Basic authentication, Amazon S3, SSH, Azure Data Lake Storage, and Azure Blob Storage credential configurations. See full examples in the documentation." required: true content: application/json: schema: $ref: "#/components/schemas/credential" examples: Basic: summary: "Basic authentication" value: basicAuthentication: url: "string" username: "string" password: "string" AmazonS3: summary: "Amazon S3 authentication" value: s3Authentication: accessId: "string" secretKey: "string" SSH: summary: "SSH authentication" value: sshAuthentication: username: "string" sshKey: "string" AzureDataLake: summary: "Azure Data Lake Storage authentication" value: azureAuthentication: url: "string" tenant: "string" servicePrincipalId: "string" servicePrincipalKey: "string" AzureBlob: summary: "Azure Blob Storage authentication" value: azureConnectionStringAuthentication: connectionString: "string" responses: "200": description: "A successful response returns HTTP status 200 with details of your newly created credentials configuration." x-summary: "Credentials configuration created" content: application/json: schema: $ref: "#/components/schemas/credentialResponse" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect payload formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" /credentials/{INSTANCE_ID}: get: tags: - "Credentials" summary: "Retrieve a specific credential configuration" description: "You can retrieve an existing credential configuration by making a `GET` request to the `/authoring/credentials` endpoint and providing the ID of the credentials configuration you want to retrieve." operationId: "retrieveCredential" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the credential configuration you want to retrieve." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 with the details of the credential configuration corresponding to the instanceId provided on the request." x-summary: "Credential configuration retrieved" content: application/json: schema: $ref: "#/components/schemas/credentialResponse" examples: default: value: instanceId: "n55affa0-3747-4030-895d-1d1236bb3680" createdDate: "2021-06-07T06:41:48.641943Z" lastModifiedDate: "2021-06-07T06:41:48.641943Z" type: "s3Authentication" name: "yourdestination" s3Authentication: accessId: "string" secretKey: "string" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect formatting" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized access" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct credential configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" put: tags: - "Credentials" summary: "Update a credential configuration" description: "You can update an existing credential configuration by making a `PUT` request to the `/authoring/credentials` endpoint with the updated payload.

To obtain an existing credential configuration and its corresponding `{INSTANCE_ID}`, see [Retrieve a credential configuration](#operation/retrieveCredential).

The following requests update existing credential configurations, defined by the parameters provided in the payload." operationId: "updateCredential" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the credential configuration that you want to update. To obtain an existing credential configuration and its corresponding INSTANCE_ID, see [Retrieve a credential configuration](#operation/retrieveCredential)." required: true schema: type: "string" requestBody: description: "The following requests update existing credential configurations, defined by the parameters provided in the payload. Examples include Basic authentication, Amazon S3, SSH, Azure Data Lake Storage, and Azure Blob Storage credential configurations." required: true content: application/json: schema: $ref: "#/components/schemas/credential" examples: Basic: summary: "Basic authentication" value: basicAuthentication: url: "string" username: "string" password: "string" AmazonS3: summary: "Amazon S3 authentication" value: s3Authentication: accessId: "string" secretKey: "string" SSH: summary: "SSH authentication" value: sshAuthentication: username: "string" sshKey: "string" AzureDataLake: summary: "Azure Data Lake Storage authentication" value: azureAuthentication: url: "string" tenant: "string" servicePrincipalId: "string" servicePrincipalKey: "string" AzureBlob: summary: "Azure Blob Storage authentication" value: azureConnectionStringAuthentication: connectionString: "string" responses: "200": description: "A successful response returns HTTP status 200 with the details of your updated credential configuration." x-summary: "Credential configuration updated" content: application/json: schema: $ref: "#/components/schemas/credentialResponse" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad request due to incorrect payload format" '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct credential configuration ID before trying again." x-summary: "Resource not found" # "405": # description: "Validation exception" # security: # - dest_auth: # - "write:dest" # - "read:dest" delete: tags: - "Credentials" summary: "Delete a credential configuration" description: "You can delete an existing credential configuration by making a `DELETE` request to the `/authoring/credentials` endpoint with the `{INSTANCE_ID}` of the credential configuration that you want to delete.

To obtain an existing destination configuration and its corresponding `{INSTANCE_ID}`, see [Retrieve a credential configuration](#operation/retrieveCredential).

The following request deletes a credential configuration defined by the `{INSTANCE_ID}` parameter." operationId: "deleteCredential" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "INSTANCE_ID" in: "path" description: "The ID of the credential configuration you want to delete." required: true schema: type: "string" responses: "200": description: "A successful response returns HTTP status 200 along with an empty HTTP response." x-summary: "Resource deleted successfully" '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized access" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Access forbidden" "404": description: "Resource not found. Verify that you are using the correct credential configuration ID before trying again." x-summary: "Resource not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" /sample-profiles: get: tags: - "Destination testing" summary: "Retrieve a list of sample profiles for a given destination configuration or destination instance" description: "Use this API endpoint to generate sample profiles for two separate use cases. You can either: " operationId: retrieveSampleInputForDestinationInstance parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: destinationInstanceId in: query description: "Destination instance ID, also called order ID. Use this parameter to generate source-schema XDM profiles for destination testing. Get the ID from the connection URL in the Experience Platform UI. Supply this parameter or destinationId, not both. Source-schema and target-schema profiles are not interchangeable." schema: type: string - name: destinationId in: query description: "Destination configuration ID returned by /destinations. Use this parameter to generate target-schema profiles for message template rendering. Supply this parameter or destinationInstanceId, not both. Source-schema and target-schema profiles are not interchangeable." schema: type: string - name: count in: query description: "Number of sample profiles to generate, from 1 to 1000. If omitted, use aggregation.bestEffortAggregation.maxUsersPerRequest from the destination configuration, or one profile if that setting is absent." required: false schema: type: integer format: int32 minimum: 1 maximum: 1000 responses: '200': description: "A successful response returns sample profiles for the given destination instance ID or destination configuration ID." x-summary: "Successful Response" content: application/json: schema: type: array items: $ref: '#/components/schemas/getSampleProfileResponse' '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Forbidden" '404': description: "Resource not found. Verify that you are using the correct destination instance ID or destination configuration ID before trying again." x-summary: "Resource Not Found" # security: # - dest_auth: # - "write:dest" # - "read:dest" '/testing/template/sample/{DESTINATION_CONFIGURATION_ID}': get: tags: - "Destination testing" summary: "Retrieve a sample destination template" description: "Retrieve a sample template corresponding to the destination's `destinationID`. For more information, see the functionality documentation on [generating a sample template](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/sample-template-api)." operationId: "retrieveDestinationDefaultTemplate" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "DESTINATION_CONFIGURATION_ID" in: "path" description: "The ID of the destination configuration for which you are generating a message transformation template.

The destination ID that you should use here is the ID that corresponds to a destination configuration, created using the `/destinations` endpoint. Refer to the [Retrieve a list of destination configurations](#operation/listDestinations) operation for more information." required: true schema: type: "string" responses: '200': description: "A successful response returns HTTP status 200 with a sample template that you can edit to match your expected data format. See the [sample template API tutorial](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/sample-template-api#generate-sample-template)." x-summary: "Successful Response" content: application/json: schema: type: string '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Forbidden" '404': description: "Resource not found. Verify that you are using the correct destination configuration ID before trying again." x-summary: "Resource Not Found" /testing/template/render: post: tags: - "Destination testing" summary: "Render test profiles based on a test destination template" description: "You can render exported data by making a POST request to the `testing/template/render` endpoint and providing the destination ID of the destination configuration and the template you created using the sample template API endpoint." operationId: createTemplateRenderer parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: description: "Data needed to render test profiles using provided template" required: true content: application/json: schema: $ref: "#/components/schemas/testingTemplateRender" responses: '200': description: "A successful response returns HTTP status 200 with a results array containing rendered output and sample profiles. See the [render template API tutorial](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/render-template-api#best-effort)." x-summary: "Successful Response" content: application/json: schema: $ref: "#/components/schemas/testingTemplateRenderResults" '400': description: "Invalid rendering request or unsupported destination configuration. Verify the destination ID, template, and supplied profiles." '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Forbidden" '404': description: "Resource not found. Verify that you are using the correct destination configuration ID before trying again." x-summary: "Resource Not Found" # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" '/testing/destinationInstance/{DESTINATION_INSTANCE_ID}': post: tags: - "Destination testing" summary: "Test a streaming or file-based destination" description: "Test a destination using supplied source-schema profiles or generated sample profiles. First create a connection and activate at least one audience in the Experience Platform UI. Streaming tests return HTTP traces. File-based tests return activation flow run IDs and a results URL that you can call to retrieve detailed activation metrics. See [streaming destination testing](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/destination-testing-api) and [file-based destination testing](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/batch-destinations/file-based-destination-testing-api)." operationId: postTestingDestinationInstance parameters: - name: DESTINATION_INSTANCE_ID in: path description: "Also known as order ID. The ID of the destination instance based on which you are generating sample profiles.

Get the destination instance ID that you should use here from the URL when browsing a connection with your destination. Refer to the Destination SDK documentation for more information on [obtaining the destination instance ID](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/destination-testing-api#get-destination-instance-id)." required: true schema: type: string - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: description: "List of profiles to test the destination with." required: false content: application/json: schema: $ref: '#/components/schemas/InputProfileList' responses: '200': description: "The call to the destination endpoint was successful." x-summary: "Successful Response" content: application/json: schema: oneOf: - $ref: '#/components/schemas/DestinationTestingResponse' - $ref: '#/components/schemas/fileBasedDestinationTestingResponse' '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Forbidden" '404': description: "Resource not found. Verify that you are using the correct destination instance ID before trying again." x-summary: "Resource Not Found" # security: # - dest_auth: # - "write:dest" # - "read:dest" /testing/template/render/destination: post: tags: - "Destination testing" summary: "Render templatized customer fields for a file-based destination" description: "Render server fields such as bucket names and folder paths using generated customer data. See the [file-based template rendering API](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/batch-destinations/file-based-render-template-api)." operationId: renderFileBasedDestinationTemplate parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/fileBasedTemplateRenderRequest' responses: '200': description: "Rendered values keyed by the template names supplied in the request." content: application/json: schema: $ref: '#/components/schemas/fileBasedTemplateRenderResponse' example: results: bucket: hfWpE-bucket path: hfWpE-bucket/ceC /testing/destinationInstance/{DESTINATION_INSTANCE_ID}/results: get: tags: - "Destination testing" summary: "Retrieve file-based destination activation results" description: "Retrieve detailed activation results after testing a file-based destination. Use the results URL returned by the test call. See the [file-based destination results API](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/batch-destinations/file-based-destination-results-api)." operationId: retrieveFileBasedDestinationTestResults parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: DESTINATION_INSTANCE_ID in: path required: true description: "Destination instance ID from the connection URL in the Experience Platform UI." schema: type: string - name: flowRunIds in: query required: true description: "Comma-separated flow run IDs from the file-based destination test response." style: form explode: false schema: type: array items: type: string responses: '200': description: "Dataflow runs, activation metrics, activity details, and links." content: application/json: schema: $ref: '#/components/schemas/fileBasedDestinationResults' /destinations/publish: get: tags: - "Destination publishing" summary: "List destination publish requests" description: "You can retrieve a list of all destinations submitted for publishing for your IMS Organization by making a GET request to the `/authoring/destinations/publish` endpoint." operationId: "listPublishDestinationRequest" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' # - in: "body" # name: "body" # description: "Destination Configuration object for a new destination" # required: true # schema: # $ref: "#/components/schemas/destinationAuthoringEntity" responses: "200": description: "The following response returns HTTP status 200 with a list of all destinations submitted for publishing that you have access to, based on the IMS Organization ID and sandbox name that you used. One configId corresponds to the publish request for one destination." x-summary: "Success" content: application/json: schema: $ref: "#/components/schemas/publishedDestination" examples: default: value: destinationId: "1230e5e4-4ab8-4655-ae1e-a6296b30f2ec" publishDetailsList: - configId: "ab41387c0-4772-4709-a3ce-6d5fee654520" allowedOrgs: - "716543205DB85F7F0A495E5B@AdobeOrg" status: "TEST" destinationType: "DEV" - configId: "cd568c67-f25e-47e4-b9a2-d79297a20b27" allowedOrgs: - "*" status: "DEPRECATED" destinationType: "PUBLIC" publishedDate: 1630525501009 - configId: "ef6f07154-09bc-4bee-8baf-828ea9c92fba" allowedOrgs: - "*" status: "PUBLISHED" destinationType: "PUBLIC" publishedDate: 1630531586002 '401': description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." x-summary: "Unauthorized" '403': description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." x-summary: "Forbidden" # security: # - dest_auth: # - "write:dest" # - "read:dest" post: tags: - "Destination publishing" summary: "Submit a destination configuration for publishing" description: "Submit a public destination configuration to Adobe for review and approval. Submission does not publish the destination immediately. Private destinations do not require a publishing request. After updating a public destination configuration, submit a new publishing request to make the changes available." operationId: "createPublishDestinationRequest" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' requestBody: description: "The following request submits a destination for publishing, across the organizations configured by the parameters provided in the payload. The payload below includes all parameters accepted by the `/authoring/destinations/publish` endpoint." required: true content: application/json: schema: $ref: "#/components/schemas/publishedDestinationRequest" examples: default: value: destinationId: "1230e5e4-4ab8-4655-ae1e-a6296b30f2ec" destinationAccess: "ALL" responses: "201": description: "A successful response returns HTTP status 201 with details of your destination publish request." x-summary: "Created - Publishing Request Submitted" content: application/json: schema: $ref: "#/components/schemas/publishedDestination" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad Request - Formatting Error" "401": description: "Unauthorized. A mandatory header might be missing from the request, or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized - Missing Permissions or Headers" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Forbidden - Access Denied or Missing Headers" # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" /destinations/publish/{DESTINATION_ID}: get: tags: - "Destination publishing" summary: "Retrieve a specific publishing request" description: "You can retrieve detailed information about a specific destination publish request by making a GET request to the `/authoring/destinations/publish` endpoint and providing the ID of the destination for which you want to retrieve the publishing status." operationId: "retrievePublishDestinationRequest" parameters: - $ref: '#/components/parameters/authorization' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' - name: "DESTINATION_ID" in: "path" description: "The ID of the destination for which you want to retrieve the publishing status." required: true schema: type: "string" # - in: "body" # name: "body" # description: "Destination Configuration object for a new destination" # required: true # schema: # $ref: "#/components/schemas/destinationAuthoringEntity" responses: "200": description: "If you passed a DESTINATION_ID in the API call, the response returns HTTP status 200 with detailed information about the specified destination publish request." x-summary: "OK - Details Retrieved" content: application/json: schema: $ref: "#/components/schemas/publishedDestination" examples: default: value: destinationId: "1230e5e4-4ab8-4655-ae1e-a6296b30f2ec" publishDetailsList: - configId: "123cs780-ce29-434f-921e-4ed6ec2a6c35" allowedOrgs: - "*" status: "PUBLISHED" destinationType: "PUBLIC" publishedDate: "1630617746" "400": description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." x-summary: "Bad Request - Formatting Error" "401": description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request before trying again." x-summary: "Unauthorized - Missing Permissions or Headers" "403": description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request before trying again." x-summary: "Forbidden - Access Denied or Missing Headers" "404": description: "Resource not found. Verify that you are using the correct destination configuration ID before trying again." x-summary: "Not Found - Incorrect Configuration ID" # security: # - dest_auth: # - "write:dest" # - "read:dest" # put: # tags: # - "Destination publishing" # summary: "Update a destination publish request" # description: "You can update the allowed organizations in a destination publish request by making a PUT request to the `/destinations/publish` endpoint and providing the ID of the destination for which you want to update the allowed organizations. In the body of the call, provide the updated allowed organizations." # operationId: "updatePublishDestinationRequest" # consumes: # - "application/json" # produces: # - "application/json" # parameters: # - $ref: '#/components/parameters/authorization' # - $ref: '#/components/parameters/x-api-key' # - $ref: '#/components/parameters/x-gw-ims-org-id' # - $ref: '#/components/parameters/x-sandbox-name' # - name: "DESTINATION_CONFIGURATION_ID" # in: "path" # description: "The ID of the destination configuration you have submitted for publishing." # required: true # type: "string" # - in: "body" # name: "body" # description: "Destination Publish request object" # required: true # schema: # $ref: "#/components/schemas/publishedDestinationRequest" # responses: # "200": # description: "A successful response returns JSON schema with updated attributes." # schema: # $ref: "#/components/schemas/publishedDestination" # "400": # description: "Bad request. The request payload was incorrectly formatted. Check your payload formatting before trying again." # '401': # description: "Unauthorized. A mandatory header might be missing from the request or you may be missing permissions to access the resource. Verify your request and try again." # '403': # description: "Forbidden. The requester is not authorized to access the resource or a mandatory header might be missing from the request. Verify your request and try again." # "404": # description: "Resource not found. Verify that you are using the correct destination configuration ID before trying again." # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" # /destinationDelivery: # post: # tags: # - "destination delivery" # summary: "Create Server,Creadential and Template details for destination delivery" # description: "Create Server,Creadential and Template details for destination delivery" # operationId: "addDelivery" # consumes: # - "application/json" # produces: # - "application/json" # parameters: # - name: Authorization # in: header # description: "The access token which can be copied from your Experience Platform integration, prefixed with 'Bearer '. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-api-key # in: header # description: "The API key which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-gw-ims-org-id # in: header # description: "The organization ID which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - in: "body" # name: "body" # description: "Server Configuration object for a new destination" # required: true # schema: # $ref: "#/components/schemas/destinationDeliveryItem" # responses: # "405": # description: "Invalid input" # security: # - dest_auth: # - "write:dest" # - "read:dest" # get: # tags: # - "destination delivery" # summary: "List Server,Creadential and Template details for destination delivery" # description: "List Server,Creadential and Template details for destination deliveryr" # operationId: "listDelivery" # consumes: # - "application/json" # produces: # - "application/json" # parameters: # - name: Authorization # in: header # description: "The access token which can be copied from your Experience Platform integration, prefixed with 'Bearer '. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-api-key # in: header # description: "The API key which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-gw-ims-org-id # in: header # description: "The organization ID which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # # - in: "body" # # name: "body" # # description: "Destination Configuration object for a new destination" # # required: true # # schema: # # $ref: "#/components/schemas/serverEntity" # responses: # "200": # description: "successful operation" # schema: # type: "array" # items: # $ref: "#/components/schemas/destinationDeliveryItem" # security: # - dest_auth: # - "write:dest" # - "read:dest" # /destinationDelivery/{instance_id}: # put: # tags: # - "destination delivery" # summary: "Update a Server,Creadential and Template details for a destination delivery" # description: "Update a Server,Creadential and Template details for a destination delivery" # operationId: "updateDelivery" # consumes: # - "application/json" # produces: # - "application/json" # parameters: # - name: Authorization # in: header # description: "The access token which can be copied from your Experience Platform integration, prefixed with 'Bearer '. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-api-key # in: header # description: "The API key which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-gw-ims-org-id # in: header # description: "The organization ID which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: "instance_id" # in: "path" # description: "Instance ID of a server configuration" # required: true # type: "string" # - in: "body" # name: "body" # description: "Destination Configuration object to update existing destination" # required: true # schema: # $ref: "#/components/schemas/destinationDeliveryItem" # responses: # "400": # description: "Invalid ID supplied" # "404": # description: "Destination not found" # "405": # description: "Validation exception" # security: # - dest_auth: # - "write:dest" # - "read:dest" # get: # tags: # - "destination delivery" # summary: "Get server configuration of a destinations" # description: "Get server configuration of a destination" # operationId: "getDelivery" # consumes: # - "application/json" # produces: # - "application/json" # parameters: # - name: Authorization # in: header # description: "The access token which can be copied from your Experience Platform integration, prefixed with 'Bearer '. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-api-key # in: header # description: "The API key which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-gw-ims-org-id # in: header # description: "The organization ID which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: "instance_id" # in: "path" # description: "Instance ID of a destination configuration" # required: true # type: "string" # responses: # "200": # description: "successful operation" # schema: # type: "object" # items: # $ref: "#/components/schemas/destinationDeliveryItem" # "404": # description: "Server not found" # security: # - dest_auth: # - "write:dest" # - "read:dest" # delete: # tags: # - "destination delivery" # summary: "Delete configuration of a destinations" # description: "Delete configuration of a destination" # operationId: "deleteDelivery" # consumes: # - "application/json" # produces: # - "application/json" # parameters: # - name: Authorization # in: header # description: "The access token which can be copied from your Experience Platform integration, prefixed with 'Bearer '. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-api-key # in: header # description: "The API key which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: x-gw-ims-org-id # in: header # description: "The organization ID which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [authentication tutorial](http://www.adobe.com/go/platform-api-authentication-en)." # required: true # type: string # - name: "instance_id" # in: "path" # description: "Instance ID of a destination configuration" # required: true # type: "string" # responses: # "200": # description: "successful operation" # schema: # type: "object" # items: # $ref: "#/components/schemas/destinationDeliveryItem" # security: # - dest_auth: # - "write:dest" # - "read:dest" # securityDefinitions: # dest_auth: # type: "oauth2" # authorizationUrl: "https://adobeid-na1-stg1.services.adobe.com/ims/token/v1" # flow: "implicit" # scopes: # write:dest: "modify destination in your account" # read:dest: "read your destinations" # api_key: # type: "apiKey" # name: "api_key" # in: "header" components: securitySchemes: bearerAuth: type: http scheme: bearer description: "Adobe access token. Also provide the required x-api-key, x-gw-ims-org-id, and x-sandbox-name headers." schemas: destination: type: object properties: sources: type: array description: "Audience data types supported by the destination. Omit for people audiences. Account audiences are supported for streaming and file-based destinations. Prospect audiences and datasets require file-based destinations." items: type: string enum: [ACCOUNTS, UNIFIED_PROFILE_PROSPECTS, DATASETS] customerEncryptionConfigurations: type: array description: "Customer encryption configuration array shown in the file-based destination guides. Those guides use an empty array." items: type: object inputSchemaId: type: string description: "Input schema ID, as shown in the dataset export configuration." maxProfileAttributes: type: integer example: 9000 description: "Maximum profile attributes, as configured in the dataset export guide." maxIdentityAttributes: type: integer example: 1000 description: "Maximum identity attributes, as configured in the dataset export guide." name: type: "string" example: "Moviestar configuration" title: "Name" description: "Indicates the title of your destination in the Experience Platform catalog." description: type: "string" example: Moviestar is a fictional destination, used for this example. title: "Internal Description" description: "Provide a description that Adobe will use in the Experience Platform destinations catalog for your destination card. Aim for no more than 4-5 sentences." # releaseNotes: # type: "string" # title: "Release Notes" # description: "This field is not necessary in the beta phase of Destination SDK ." status: type: "string" example: "TEST" title: "Status" description: "Indicates the lifecycle status of the destination card. Use `TEST` when you first configure your destination." enum: - "TEST" - "PUBLISHED" - "DELETED" # authenticationLevel: # type: "string" # description: "Select authentication level required for this destination. PLATFORM means authentication is common for all customer. Choose USER if customer has to authenticate with destination." # enum: # - "USER" # - "PLATFORM" # mapperSchemaId: # type: "string" # title: "Mapper Schema ID" # description: "Patner's Mapper Schema Id. This is the intermediate schema created by partner using mapper API." customerAuthenticationConfigurations: # is Authentication flow is required type: "array" title: "Customer Authentication Configurations" description: "Indicates the configuration used to authenticate Experience Platform customers to your server. See `authType` below for accepted values." items: oneOf: - $ref: "#/components/schemas/customerAuthenticationConfiguration" - $ref: "#/components/schemas/oauth2CustomerAuthenticationConfiguration" customerDataFields: type: "array" description: "Defines fields that you are requiring the Experience Platform customer to fill in when they set up a connection to your destination." items: $ref: "#/components/schemas/customerDataField" uiAttributes: type: "object" description: Provide values for the parameters in this object to set up various UI elements for your destination. properties: # isDestination: # auto populate # type: "boolean" # default: true # isPreview: # auto populate # type: "boolean" # default: true # isBeta: # auto populate # type: "boolean" # default: false documentationLink: type: "string" example: "https://www.adobe.com/go/destinations-moviestar-en" description: "Refers to the documentation page in the Destinations Catalog for your destination. Use http://www.adobe.com/go/destinations-YOURDESTINATION-en, where YOURDESTINATION is the name of your destination. For a destination called Moviestar, you would use `http://www.adobe.com/go/destinations-moviestar-en`" category: type: "string" example: "mobile" description: "Refers to the category assigned to your destination in Adobe Experience Platform. For more information, read [Destination categories](http://www.adobe.com/go/destinations-types-categories-en)." enum: - "adobeSolutions" - "advertising" - "analytics" - "cdp" - "cloudStorage" - "crm" - "customerSuccess" - "database" - "dmp" - "ecommerce" - "email" - "emailMarketing" - "enrichment" - "livechat" - "marketingAutomation" - "mobile" - "personalization" - "protocols" - "social" - "streaming" - "subscriptions" - "surveys" - "tagManagers" - "voc" - "warehouses" - "payments" # iconUrl: # type: "string" # description: "Provide the logo that Adobe will display in the Adobe Experience Platform destinations catalog for your destination card." # type: "object" # properties: # text: # type: "string" # label: #auto populate from top level # type: "object" # properties: # text: # type: "string" # destinationType: # auto populate # type: "object" # properties: # key: # type: "string" # default: "PARTNER_MAPPING" # enum: # - "PARTNER_MAPPING" connectionType: # auto populate type: "string" example: "Server-to-server" default: "Server-to-server" description: "Connection type shown in the destinations workspace." enum: - "Server-to-server" - "Cloud storage" - "Azure Blob" - "Azure Data Lake Storage" - "S3" - "SFTP" - "DLZ" frequency: type: "string" example: "Streaming" description: "Use Streaming for API-based integrations and Batch for file exports." enum: - "Streaming" - "Batch" isBeta: type: string enum: ["true", "false"] description: "Set to the string true to mark the destination card as beta, as shown in the UI attributes reference." icon: type: object description: "Icon configuration shown in the destination configuration examples. Share the logo image with Adobe when submitting the destination." properties: key: type: string example: amazonS3 flowRunsSupported: type: boolean description: "Enable dataflow runs for file-based destinations." monitoringSupported: type: boolean description: "Enable monitoring for file-based destinations." # allowedNamespaces: #Need to remove it # type: "array" # title: "Allowable Namespaces" # description: "List of allowed namespaces." # items: # type: "object" # properties: # namespace: # type: "string" # # defaultMapping: # # type: "MappingOperation" identityNamespaces: $ref: "#/components/schemas/identityNamespaces" destinationDelivery: type: "array" items: $ref: "#/components/schemas/destinationDeliveryItem" # inputSchemaId: # type: "string" # title: "Partner's Schema ID" # description: "This field is automatically generated and does not require your input." schemaConfig: type: "object" title: "Schema Config" description: "The parameters in this object create your partner schema configuration. Read more about [schema configuration](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/schema-configuration)." properties: useCustomerSchemaForAttributeMapping: type: boolean default: false description: "When true, use the customer schema for attribute mapping instead of predefined profileFields." dynamicSchemaConfig: type: object properties: dynamicEnum: allOf: - $ref: "#/components/schemas/dynamicEnum" - type: object required: [authenticationRule, destinationServerId, value, responseFormat] properties: responseFormat: type: string enum: [SCHEMA] requiredMappingsOnly: type: boolean description: "When true, only the predefined required mappings are available in the activation workflow." requiredMappings: type: array description: "Define both source and destination, or destination only. A source-only mapping is not supported." items: $ref: "#/components/schemas/requiredMapping" profileFields: type: "array" description: "Predefined target attributes available when mapping Experience Platform profile attributes. See the [static schema configuration reference](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/schema-configuration)." items: $ref: "#/components/schemas/customerDataField" profileRequired: type: "boolean" example: true title: "Is Profile Required" description: "Use true if users should be able to map profile attributes from Experience Platform to custom attributes on your destination's side, as shown in the example configuration above." segmentRequired: type: "boolean" example: true title: "Is Segment Required" description: "Set to true for audience exports. Set to false for dataset exports, which do not require audience selection." identityRequired: type: "boolean" example: true title: "Is Identity Required" description: "Use true if you users should be able to map identity namespaces from Experience Platform to your desired schema." segmentNamespaceAllowList: type: "array" items: type: string example: ["AudienceManager"] title: "Segment Namespace Allow List" description: "Allow only the listed audience namespaces. Mutually exclusive with segmentNamespaceDenyList. Adobe recommends explicitly setting segmentNamespaceDenyList to an empty array instead, to support all audience origins." segmentNamespaceDenyList: type: "array" items: type: string example: ["AudienceManager"] title: "Segment Namespace Deny List" description: "Restricts users from mapping audiences from the audience namespaces defined in the array to the destination.

Adobe recommends to allow the export of all audiences, regardless of the origin, by setting \"segmentNamespaceDenyList\":[].

**Important:** If you don't specify `segmentNamespaceDenyList` in your `schemaConfig` and you don't use `segmentNamespaceAllowList`, the system automatically sets `segmentNamespaceDenyList` to `[]`. This prevents the loss of custom audiences in the future. For safety, Adobe recommends explicitly setting `\"segmentNamespaceDenyList\":[]` in your configuration.

`segmentNamespaceAllowList` and `segmentNamespaceDenyList` are mutually exclusive." aggregation: type: "object" title: "Aggregation Policy" description: "Indicates the aggregation policy that should be applied when Experience Platform exports data to your destination. Read more about [aggregation policies](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/aggregation-policy)." properties: aggregationType: type: "string" example: "CONFIGURABLE_AGGREGATION" description: "Select either `BEST_EFFORT` or `CONFIGURABLE_AGGREGATION`. You are required to select one of them for your destination." enum: - "BEST_EFFORT" - "CONFIGURABLE_AGGREGATION" bestEffortAggregation: type: "object" title: "Best Effort Aggregation" description: "Required parameters to set up best effort aggregation." properties: maxUsersPerRequest: type: "integer" minimum: 1 example: 10 title: "maxUsersPerRequest" description: "Experience Platform can aggregate multiple exported profiles in a single HTTP call. Specify the maximum number of profiles that your endpoint should receive in a single HTTP call. Note that this is a best effort aggregation. For example, if you specify the value 100, Platform might send any number of profiles smaller than 100 on a call." splitUserById: type: "boolean" example: false title: "splitUserById" description: "Use this flag if the call to the destination should be split by identity. Set this flag to true if your server only accepts one identity per call, for a given namespace." aggregationKey: type: object allOf: - $ref: "#/components/schemas/configurableAggregation/properties/aggregationKey" nullable: true description: "Optional grouping by audience or identity. Omit or set to null when no aggregation key is needed." configurableAggregation: type: "object" title: "Configurable Aggregation" description: "Required parameters to set up configurable aggregation." $ref: "#/components/schemas/configurableAggregation" marketingActions: type: "array" title: "Marketing Actions" example: ["EMAIL_TARGETING"] description: "Select if you want your destination to have default marketing actions. Read more about marketing actions in the [Data usage policies overview](http://www.adobe.com/go/dule-policies-en)." items: type: "string" enum: - "ANALYTICS" - "COMBINE_WITH_PII" - "CROSS_SITE_TARGETING" - "DATA_SCIENCE" - "EMAIL_TARGETING" - "EXPORT_TO_THIRD_PARTY" - "ONSITE_ADVERTISING" - "ONSITE_PERSONALIZATION" - "SINGLE_IDENTITY_PERSONALIZATION" duleLabels: type: "array" title: "DULE Labels" example: ["C1"] description: "Select if you want your destination to have default data usage labels. Read more in the [Data usage labels glossary](http://www.adobe.com/go/dule-supported-labels-en)." items: type: "string" enum: - "C1" - "C2" - "C3" - "C4" - "C5" - "C6" - "C7" - "C8" - "C9" - "C10" - "I1" - "I2" - "S1" - "S2" backfillHistoricalProfileData: type: "boolean" example: true enum: [true] title: "Historical profile data backfill" description: "Historical profile qualifications are always enabled for destinations created with Destination SDK. This value is not configurable." default: true audienceMetadataConfig: type: object description: "Audience metadata template configuration. Do not supply an audienceTemplateId when segmentMappingConfig.mapUserInput is true." properties: audienceTemplateId: type: string description: "The instanceId of the audience metadata template used by this destination." segmentMappingConfig: type: object description: The settings in this object determine how segments from Experience Platform are mapped to corresponding segments or audiences in your destination. properties: mapUserInput: type: boolean example: false default: false description: "Controls whether the segment mapping ID in the destination activation workflow is input by the user." mapExperiencePlatformSegmentId: type: boolean example: false default: false description: "Controls whether the segment mapping ID in the destination activation workflow is the Experience Platform segment ID." mapExperiencePlatformSegmentName: type: boolean example: false default: false description: "Controls whether the segment mapping ID in the destination activation workflow is the Experience Platform segment name." audienceTemplateId: type: string example: "12a3238f-b509-4a40-b8fb-0a5006e7901d" description: " The `instanceId` of the [audience metadata template](http://www.adobe.com/go/destination-sdk-audience-metadata-en) used for this destination. When used, this controls whether the segment mapping ID is generated by audience metadata template." batchConfig: type: object title: "Batch Configuration" description: "Configuration settings for batch processing in file-based destinations. This object controls how data is processed and delivered in batch mode." properties: backfillHistoricalProfileData: $ref: "#/components/schemas/destination/properties/backfillHistoricalProfileData" datasetBatchConfig: $ref: "#/components/schemas/datasetBatchConfig" allowDedupKeyFieldSelection: type: boolean description: "Deduplication selection field used in the dataset export examples. The audience batch reference uses allowDedupeKeyFieldSelection." allowJoinKeyFieldSelection: type: boolean description: "Join key selection setting shown in the Azure Blob destination guide." autoSelectJoinKeyOnPartnerSchemaSelection: type: boolean description: "Automatic join key selection setting shown in the file-based destination guides." joinKeyTitle: type: string example: "DEDUPLICATION KEY" allowMandatoryFieldSelection: type: boolean example: true default: false title: "Allow Mandatory Field Selection" description: "Set to `true` to allow customers to specify which profile attributes are mandatory. Default value is `false`. See [Mandatory attributes](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/ui/activate/activate-batch-profile/batch-destinations-mapping-reference#mandatory-attributes) for more information." allowDedupeKeyFieldSelection: type: boolean example: true default: false title: "Allow Dedupe Key Field Selection" description: "Set to `true` to allow customers to specify deduplication keys. Default value is `false`. See [Deduplication keys](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/ui/activate/activate-batch-profile/batch-destinations-mapping-reference#deduplication-keys) for more information." defaultExportMode: type: string default: DAILY_FULL_EXPORT example: "DAILY_FULL_EXPORT" title: "Default Export Mode" description: "Defines the default file export mode. Supported values: `DAILY_FULL_EXPORT`, `FIRST_FULL_THEN_INCREMENTAL`. Default value is `DAILY_FULL_EXPORT`. See the [batch activation documentation](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/ui/activate/activate-batch-profile/activate-batch-profile-destinations#scheduling) for details about file exports scheduling." enum: - "DAILY_FULL_EXPORT" - "FIRST_FULL_THEN_INCREMENTAL" allowedExportModes: type: array title: "Allowed Export Modes" description: "Defines the file export modes available to customers. Supported values: `DAILY_FULL_EXPORT`, `FIRST_FULL_THEN_INCREMENTAL`." items: type: string enum: - "DAILY_FULL_EXPORT" - "FIRST_FULL_THEN_INCREMENTAL" allowedScheduleFrequency: type: array title: "Allowed Schedule Frequency" description: "Defines the file export frequency available to customers. Supported values: `ONCE`, `EVERY_3_HOURS`, `EVERY_6_HOURS`, `EVERY_8_HOURS`, `EVERY_12_HOURS`, `DAILY`, `WEEKLY`, `MONTHLY`." items: type: string enum: - "ONCE" - "EVERY_3_HOURS" - "EVERY_6_HOURS" - "EVERY_8_HOURS" - "EVERY_12_HOURS" - "DAILY" - "WEEKLY" - "MONTHLY" defaultFrequency: type: string default: DAILY example: "DAILY" title: "Default Frequency" description: "Defines the default file export frequency. Supported values: `ONCE`, `EVERY_3_HOURS`, `EVERY_6_HOURS`, `EVERY_8_HOURS`, `EVERY_12_HOURS`, `DAILY`, `WEEKLY`, `MONTHLY`. Default value is `DAILY`." enum: - "ONCE" - "EVERY_3_HOURS" - "EVERY_6_HOURS" - "EVERY_8_HOURS" - "EVERY_12_HOURS" - "DAILY" - "WEEKLY" - "MONTHLY" defaultStartTime: type: string default: "00:00" pattern: '^(?:[01][0-9]|2[0-3]):[0-5][0-9]$' example: "00:00" title: "Default Start Time" description: "Defines the default start time for the file export. Uses 24-hour file format. Default value is \"00:00\"." filenameConfig: type: object title: "Filename Configuration" description: "Configuration for file naming options in batch exports." properties: allowedFilenameAppendOptions: type: array title: "Allowed Filename Append Options" description: "List of available file name macros for users to choose from. This determines which items are appended to exported file names (audience ID, organization name, date and time of export, and others). When setting `defaultFilename`, make sure to avoid duplicating macros. Supported values: `DESTINATION`, `SEGMENT_ID`, `SEGMENT_NAME`, `DESTINATION_INSTANCE_ID`, `DESTINATION_INSTANCE_NAME`, `ORGANIZATION_NAME`, `SANDBOX_NAME`, `DATETIME`, `CUSTOM_TEXT`. Regardless of the order in which you define the macros, the Experience Platform UI will always display them in the order presented here. If `defaultFilename` is empty, the `allowedFilenameAppendOptions` list must contain at least one macro." items: type: string enum: - "DESTINATION" - "SEGMENT_ID" - "SEGMENT_NAME" - "DESTINATION_INSTANCE_ID" - "DESTINATION_INSTANCE_NAME" - "ORGANIZATION_NAME" - "SANDBOX_NAME" - "DATETIME" - "CUSTOM_TEXT" - "TIMESTAMP" - "MERGE_POLICY_ID" - "MERGE_POLICY_NAME" defaultFilenameAppendOptions: type: array title: "Default Filename Append Options" description: "Pre-selected default file name macros that users can uncheck. The macros in this list are a subset of the ones defined in `allowedFilenameAppendOptions`." items: type: string enum: - "DESTINATION" - "SEGMENT_ID" - "SEGMENT_NAME" - "DESTINATION_INSTANCE_ID" - "DESTINATION_INSTANCE_NAME" - "ORGANIZATION_NAME" - "SANDBOX_NAME" - "DATETIME" - "CUSTOM_TEXT" - "TIMESTAMP" - "MERGE_POLICY_ID" - "MERGE_POLICY_NAME" defaultFilename: type: string example: "%DESTINATION%_%SEGMENT_ID%" title: "Default Filename" description: "Defines fixed file name macros. Users cannot overwrite them. Append options follow these macros. CUSTOM_TEXT cannot be used here. DATETIME and TIMESTAMP are mutually exclusive. Use MERGE_POLICY_ID and MERGE_POLICY_NAME with segmentGroupingEnabled set to true. For audience exports, an empty defaultFilename requires at least one allowed append macro." required: - "allowedFilenameAppendOptions" - "defaultFilenameAppendOptions" segmentGroupingEnabled: type: boolean default: false example: true title: "Segment Grouping Enabled" description: "Defines whether the activated audiences should be exported in a single file or multiple files, based on audience [merge policy](https://experienceleague.adobe.com/en/docs/experience-platform/profile/merge-policies/overview). Supported values: `true` exports one file per merge policy, `false` exports one file per audience, regardless of the merge policy. This is the default behavior. You can achieve the same result by omitting this parameter entirely." destinationDeliveryItem: type: "object" description: "Settings related how customers authenticate to your destination." required: [authenticationRule, destinationServerId] oneOf: - required: [authenticationId] properties: authenticationRule: enum: [PLATFORM_AUTHENTICATION] - properties: authenticationRule: enum: [CUSTOMER_AUTHENTICATION, NONE] properties: deliveryMatchers: type: array description: "Required for file-based destinations. Use SOURCE with the value array containing batch. Not required for streaming destinations." items: type: object required: [type, value] properties: type: type: string enum: [SOURCE] value: type: array items: type: string enum: [batch] minItems: 1 authenticationRule: type: "string" example: "CUSTOMER_AUTHENTICATION" title: "Authentication Rule" description: "Indicates how Experience Platform customers connect to your destination.

" enum: - "CUSTOMER_AUTHENTICATION" - "PLATFORM_AUTHENTICATION" - "NONE" authenticationId: type: "string" description: "The `instanceId` of the credentials configuration object to use for authentication. This parameter is required when using `PLATFORM_AUTHENTICATION` to link your destination configuration to the credentials configuration. When using `CUSTOMER_AUTHENTICATION`, this parameter is not needed." # serverRule: # type: "string" # title: "Server Rule" # description: "Defines server rule." # enum: # - "SERVER_ID" # - "NONE" # serverId: # type: "string" # templateRule: # type: "string" # title: "Template Rule" # description: "Defines template rule." # enum: # - "TEMPLATE_ID" # - "NONE" # templateId: # type: "string" destinationServerId: type: "string" example: "2307ec2b-4798-45a4-9239-5d0a2fb0ed67" description: "The `instanceId` of the destination server configuration used for this destination." # customerTargetTypeItem: # type: "object" # properties: # targetType: # type: "string" # enum: # - "FILE_TARGET" # - "USER_NAMESPACE" # check with UI team to change the name for this # - "NONE" # additionalFields: # type: "array" # items: # $ref: "#/components/schemas/customerDataField" dynamicEnum: type: object required: [destinationServerId, authenticationRule, value, responseFormat] properties: destinationServerId: type: string description: "The instanceId of the server that retrieves the dynamic values." authenticationRule: type: string enum: [CUSTOMER_AUTHENTICATION, PLATFORM_AUTHENTICATION, NONE] queryParams: type: array description: "Customer field names passed to the dynamic dropdown server." items: type: string value: type: string description: "Response path for dropdown values, or the dynamic schema name." responseFormat: type: string enum: [NAME_VALUE, SCHEMA] requiredMapping: type: object required: [destination] description: "A required destination field, optionally paired with a required source field." properties: sourceType: type: string enum: [text/x.schema-path, text/x.aep-xl, text/plain] source: type: string description: "XDM path, expression, or metadata.segment.alias macro. Specify the corresponding sourceType when supplying a source." destination: type: string mandatoryRequired: type: boolean primaryKeyRequired: type: boolean datasetBatchConfig: type: object description: "Folder naming and export schedules for destinations with sources set to DATASETS. Nested inside batchConfig. Default folder macros must be a subset of the allowed macros. If the defaults are empty, include at least one allowed macro." required: [allowedFoldernameAppendOptions, defaultFoldernameAppendOptions] properties: allowedFoldernameAppendOptions: type: array items: type: string enum: [DESTINATION, DATASET_ID, DATASET_NAME, EXPORT_TIME, DESTINATION_INSTANCE_ID, DESTINATION_INSTANCE_NAME, ORGANIZATION_NAME, SANDBOX_NAME, DATETIME, CUSTOM_TEXT] defaultFoldernameAppendOptions: type: array items: type: string enum: [DESTINATION, DATASET_ID, DATASET_NAME, EXPORT_TIME, DESTINATION_INSTANCE_ID, DESTINATION_INSTANCE_NAME, ORGANIZATION_NAME, SANDBOX_NAME, DATETIME, CUSTOM_TEXT] allowedExportModes: type: array items: type: string enum: [DAILY_FULL_EXPORT, FIRST_FULL_THEN_INCREMENTAL] allowedScheduleFrequency: type: array items: type: string enum: [ONCE, EVERY_3_HOURS, EVERY_6_HOURS, EVERY_8_HOURS, EVERY_12_HOURS, DAILY] server: properties: name: type: "string" title: "Destination Server" description: "Defines Destination Server details." # protocol: # type: "string" # title: "Destination Server protocol" # description: "Defines Destination Server protocol as HTTP or FTP." destinationServerType: type: "string" title: "Destination Server type" description: "Defines the destination server type as HTTP, SFTP, S3, Azure Data Lake Storage Gen2, Azure Blob Storage, Data Landing Zone, or Google Cloud Storage." enum: - "URL_BASED" - "FILE_BASED_SFTP" - "FILE_BASED_S3" - "FILE_BASED_ADLS_GEN2" - "FILE_BASED_AZURE_BLOB" - "FILE_BASED_DLZ" - "FILE_BASED_GOOGLE_CLOUD" # - "NONE" # requiresAggregation: How partner can define Aggregation policy ? # type: boolean # title: "Requires Aggregation" # description: "Sets if we need an aggregation policy for this flow" # aggregationPolicyId: # type: "string" # title: "Aggregation Policy Id" # description: "The key for the policy in the aggregation service for this flow" qos: type: "object" title: "Quality of service" description: "Quality of service settings used to determine the queue for streaming." properties: name: type: "string" urlBasedDestination: type: "object" title: "HTTP Settings" description: "Define HTTP protocol details and (if required) a template for the HTTP URL." properties: url: $ref: "#/components/schemas/templateString" required: - "url" fileBasedSFTPDestination: type: "object" title: "SFTP Settings" description: "Defines SFTP protocol details." properties: rootDirectory: type: "object" title: "Root Directory" description: "The path to the directory that will host the exported files. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"Storage/MyDirectory\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" hostName: type: "object" title: "Host Name" description: "The host name of your SFTP server. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"my.hostname.com\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" port: type: "integer" description: "The SFTP file server port." example: 22 encryptionMode: type: "string" description: "Indicates whether to use file encryption. Supported values: `PGP`, `None`." example: "PGP" enum: - "PGP" - "None" required: - "rootDirectory" - "hostName" fileBasedS3Destination: type: "object" title: "S3 Settings" description: "Defines S3 protocol details." properties: bucket: type: "object" title: "Bucket" description: "The name of the Amazon S3 bucket to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"MyBucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" path: type: "object" title: "Path" description: "The path to the Amazon S3 bucket to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"/path/to/MyBucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "bucket" - "path" fileBasedAdlsGen2Destination: type: "object" title: "Azure Data Lake Storage Gen2 Settings" description: "Defines Azure Data Lake Storage Gen2 protocol details." properties: path: type: "object" title: "Path" description: "The path to your Azure Data Lake Storage Gen2 storage folder. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `abfs://@.dfs.core.windows.net//`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "path" fileBasedAzureBlobDestination: type: "object" title: "Azure Blob Storage Settings" description: "Defines Azure Blob Storage protocol details." properties: path: type: "object" title: "Path" description: "The path to your Azure Blob storage. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `https://myaccount.blob.core.windows.net/`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" container: type: "object" title: "Container" description: "The name of the Azure Blob Storage container to be used for this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `myContainer`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "path" - "container" fileBasedDlzDestination: type: "object" title: "Data Landing Zone Settings" description: "Defines Data Landing Zone protocol details." properties: path: type: "object" title: "Path" description: "The path to the destination folder that will host the exported files." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" useCase: type: "string" title: "Use Case" description: "*Required*. Set this to `dlz_destination`. This property identifies the destination as a Data Landing Zone destination. This property is only used when creating a Data Landing Zone destination." example: "dlz_destination" required: - "path" - "useCase" fileBasedGoogleCloudStorageDestination: type: "object" title: "Google Cloud Storage Settings" description: "Defines Google Cloud Storage protocol details." properties: bucket: type: "object" title: "Bucket" description: "The name of the Google Cloud Storage bucket to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"my-bucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" path: type: "object" title: "Path" description: "The path to the Google Cloud Storage folder to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"/path/to/my-bucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "bucket" - "path" credential: type: "object" title: "credential" description: "Defines credential type with details to authenticate with the destination server at platform level." properties: type: type: "string" title: "Credential type" description: "Defines the credential type." example: "basic" enum: - "basic" - "s3Authentication" - "sshAuthentication" - "azureAuthentication" - "azureConnectionStringAuthentication" name: type: "string" title: "Name" description: "Name of the credential configuration." basicAuthentication: type: "object" description: "Required parameters to set up basic authentication with username and password." properties: url: description: "URL of authorization provider." type: "string" username: description: User name required to connect to the destination server type: "string" password: description: Password required to connect to the destination server type: "string" required: - "username" - "password" s3Authentication: type: "object" description: "Required parameters to set up authentication with Amazon S3." properties: accessId: description: "Amazon S3 access ID." type: "string" secretKey: description: "Amazon S3 secret key." type: "string" required: - "accessId" - "secretKey" sshAuthentication: type: "object" description: "Required parameters to set up SSH authentication for SFTP." properties: username: description: "Credentials configuration login username." type: "string" sshKey: description: "SSH key for SFTP with SSH authentication." type: "string" required: - "username" - "sshKey" azureAuthentication: type: "object" description: "Required parameters to set up authentication with Azure Data Lake Storage." properties: url: description: "URL of authorization provider." type: "string" tenant: description: "Azure Data Lake Storage tenant." type: "string" servicePrincipalId: description: "Azure Service Principal ID for Azure Data Lake Storage." type: "string" servicePrincipalKey: description: "Azure Service Principal Key for Azure Data Lake Storage." type: "string" required: - "url" - "tenant" - "servicePrincipalId" - "servicePrincipalKey" azureConnectionStringAuthentication: type: "object" description: "Required parameters to set up authentication with Azure Blob Storage." properties: connectionString: description: "Azure Blob Storage connection string." type: "string" required: - "connectionString" # oauth2UserAuthentication: # type: "object" # properties: # url: # type: "string" # description: "URL of the authorization provider" # example: "https://www.moviestar.com/dialog/OAuth" # clientId: # type: "string" # description: "The client ID that your system assigns to Adobe Experience Platform." # example: "Experience-Platform-client-id" # clientSecret: # type: "string" # description: "The client secret that your system assigns to Adobe Experience Platform." # example: "Experience-Platform-client-secret" # username: # type: "string" # password: # type: "string" # header: # type: "string" # description: "Specifies if any headers should be added to the HTTP call to your access token endpoint." # required: # - "clientId" # - "clientSecret" # - "username" # - "password" # - "url" # oauth2ClientAuthentication: # type: "object" # properties: # url: # type: "string" # description: "URL of the authorization provider" # example: "https://www.moviestar.com/dialog/OAuth" # clientId: # type: "string" # description: "The client ID that your system assigns to Adobe Experience Platform." # example: "Experience-Platform-client-id" # clientSecret: # type: "string" # description: "The client secret that your system assigns to Adobe Experience Platform." # example: "Experience-Platform-client-secret" # header: # type: "string" # developerToken: # type: "string" # required: # - "clientId" # - "clientSecret" # - "url" # oauth2AccessTokenAuthentication: # type: "object" # properties: # accessToken: # type: "string" # description: "Access token provided by the authorization provider" # expiration: # type: "string" # username: # type: "string" # userId: # type: "string" # url: # type: "string" # description: "URL of the authorization provider" # example: "https://www.moviestar.com/dialog/OAuth" # header: # type: "string" # required: # - "accessToken" # oauth2RefreshTokenAuthentication: # type: "object" # properties: # refreshToken: # type: "string" # description: "Refresh token provided by the authorization provider." # expiration: # type: "string" # clientId: # type: "string" # description: "The client ID that your system assigns to Adobe Experience Platform." # example: "Experience-Platform-client-id" # clientSecret: # type: "string" # description: "The client secret that your system assigns to Adobe Experience Platform." # example: "Experience-Platform-client-secret" # url: # type: "string" # description: "URL of the authorization provider" # example: "https://api.moviestar.com/OAuth/refresh_token" # header: # type: "string" # required: # - "clientId" # - "clientSecret" # - "refreshToken" # - "url" # oauth1Authentication: # type: "object" # properties: # apiKey: # type: "string" # apiSecret: # type: "string" # accessToken: # type: "string" # tokenSecret: # type: "string" # required: # - "apiKey" # - "apiSecret" # - "accessToken" # - "tokenSecret" template: properties: name: type: "string" title: "Template name" outputType: type: "string" title: "Output Type" description: "Defines output template type either as http or file template." enum: - "FILE" - "HTTP" httpTemplate: type: "object" title: "Http Template" description: "Defines the fields in the HTTP template." properties: requestBody: $ref: "#/components/schemas/templateString" httpMethod: type: "string" enum: - "GET" - "PUT" - "POST" - "DELETE" - "PATCH" queryParameters: $ref: "#/components/schemas/templateString" description: "Enter any query parameters that will be appended in the call to your destination server. " contentType: type: "string" headers: type: "array" items: $ref: "#/components/schemas/header" required: - "httpMethod" # fileTemplate: # type: "object" # title: "File Template" # description: "Defines fields in file template. Currently file type is not supported." #do validation in API # properties: # filename: # $ref: "#/components/schemas/templateString" # header: # $ref: "#/components/schemas/templateString" # dataRow: # $ref: "#/components/schemas/templateString" # maxFileSizeMB: # type: "string" # compression: # type: "string" # infoReceipt: # type: "string" # md5Receipt: # type: "string" Streaming_Destination_Server_Request: type: object title: Create Streaming Destination Server description: "URL-based server configuration for streaming delivery, dynamic schemas, and dynamic dropdowns. Use a URL-based server for each API endpoint." required: - name - destinationServerType - urlBasedDestination properties: description: type: string qos: $ref: "#/components/schemas/server/properties/qos" responseFields: type: array items: $ref: "#/components/schemas/namedTemplateString" validations: type: array items: $ref: "#/components/schemas/templatizedValidation" name: type: string description: "Represents a friendly name of your server, visible only to Adobe." destinationServerType: type: string enum: ["URL_BASED"] urlBasedDestination: type: object required: [url] properties: url: $ref: "#/components/schemas/templateStringUrl" httpTemplate: type: object required: [httpMethod] properties: headers: type: array items: $ref: "#/components/schemas/header" queryParameters: $ref: "#/components/schemas/templateStringQueryParameters" requestBody: $ref: "#/components/schemas/templateStringBody" httpMethod: type: string enum: ["GET", "PUT", "POST", "DELETE", "PATCH"] contentType: type: string description: "Content type for the outgoing request. Required for streaming payload templates. Dynamic schema GET examples omit this field." Amazon_S3_Destination_Server_Request: type: object title: Create Amazon S3 Destination Server description: Configuration for Amazon S3 file-based destinations. required: - name - destinationServerType - fileBasedS3Destination properties: description: type: string name: type: string description: "Represents a friendly name of your server, visible only to Adobe." destinationServerType: type: string enum: ["FILE_BASED_S3"] fileBasedS3Destination: type: object required: [bucket, path] properties: bucket: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string path: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string fileConfigurations: $ref: "#/components/schemas/fileConfigurations" SFTP_Destination_Server_Request: type: object title: Create SFTP Destination Server description: Configuration for SFTP file-based destinations. required: - name - destinationServerType - fileBasedSFTPDestination properties: description: type: string name: type: string description: "Represents a friendly name of your server, visible only to Adobe." destinationServerType: type: string enum: ["FILE_BASED_SFTP"] fileBasedSFTPDestination: type: object required: [rootDirectory, hostName] properties: rootDirectory: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string hostName: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string port: type: integer encryptionMode: type: string description: "Indicates whether to use file encryption. Supported values: `PGP`, `None`." example: "PGP" enum: - "PGP" - "None" fileConfigurations: $ref: "#/components/schemas/fileConfigurations" Azure_Blob_Destination_Server_Request: type: object title: Create Azure Blob Storage Destination Server description: Configuration for Azure Blob Storage file-based destinations. required: - name - destinationServerType - fileBasedAzureBlobDestination properties: description: type: string name: type: string description: "Represents a friendly name of your server, visible only to Adobe." destinationServerType: type: string enum: ["FILE_BASED_AZURE_BLOB"] fileBasedAzureBlobDestination: type: object required: [container, path] properties: path: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string container: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string fileConfigurations: $ref: "#/components/schemas/fileConfigurations" Azure_Data_Lake_Storage_Gen2_Destination_Server_Request: type: object title: Create Azure Data Lake Storage Gen2 Destination Server description: Configuration for Azure Data Lake Storage Gen2 file-based destinations. required: - name - destinationServerType - fileBasedAdlsGen2Destination properties: description: type: string name: type: string description: "Represents a friendly name of your server, visible only to Adobe." destinationServerType: type: string enum: ["FILE_BASED_ADLS_GEN2"] fileBasedAdlsGen2Destination: type: object required: [path] properties: path: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string fileConfigurations: $ref: "#/components/schemas/fileConfigurations" Data_Landing_Zone_Destination_Server_Request: type: object title: Create Data Landing Zone Destination Server description: Configuration for Data Landing Zone file-based destinations. required: - name - destinationServerType - fileBasedDlzDestination properties: description: type: string name: type: string description: "Represents a friendly name of your server, visible only to Adobe." destinationServerType: type: string enum: ["FILE_BASED_DLZ"] fileBasedDlzDestination: type: object required: [path, useCase] properties: path: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string useCase: type: string enum: ["dlz_destination"] fileConfigurations: $ref: "#/components/schemas/fileConfigurations" Google_Cloud_Storage_Destination_Server_Request: type: object title: Create Google Cloud Storage Destination Server description: Configuration for Google Cloud Storage file-based destinations. required: - name - destinationServerType - fileBasedGoogleCloudStorageDestination properties: description: type: string name: type: string description: "Represents a friendly name of your server, visible only to Adobe." destinationServerType: type: string enum: ["FILE_BASED_GOOGLE_CLOUD"] fileBasedGoogleCloudStorageDestination: type: object required: [bucket, path] properties: bucket: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string path: type: object properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: string fileConfigurations: $ref: "#/components/schemas/fileConfigurations" fileConfigurations: type: object description: File formatting options shared by file-based destination servers. Template values can be fixed or derived from customerDataFields. File type defaults to csv and supports csv, parquet, and json. properties: compression: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string fileType: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string csvOptions: type: object properties: encoding: "$ref": "#/components/schemas/templateString" quote: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string quoteAll: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string escape: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string escapeQuotes: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string header: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string ignoreLeadingWhiteSpace: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string ignoreTrailingWhiteSpace: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string nullValue: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string dateFormat: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string timestampFormat: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string charToEscapeQuoteEscaping: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string emptyValue: type: object properties: templatingStrategy: "$ref": "#/components/schemas/templatingStrategy" value: type: string sep: allOf: - "$ref": "#/components/schemas/templateString" description: Field separator used in the configuration examples. Defaults to a comma. The formatting parameter table calls this option delimiter. delimiter: allOf: - "$ref": "#/components/schemas/templateString" description: CSV separator name used in the formatting parameter table. The configuration examples use sep. maxFileRowCount: type: integer minimum: 1000000 maximum: 10000000 default: 5000000 description: Maximum rows per exported file. includeFileManifest: allOf: - "$ref": "#/components/schemas/templateString" description: Template controlling whether to include a manifest with the exported files. destinationServer: title: Destination Server type: object properties: qos: $ref: "#/components/schemas/server/properties/qos" fileConfigurations: $ref: "#/components/schemas/fileConfigurations" responseFields: type: array items: $ref: "#/components/schemas/namedTemplateString" validations: type: array items: $ref: "#/components/schemas/templatizedValidation" name: type: "string" example: Your destination server title: "Destination Server" description: "Represents a friendly name of your server, visible only to Adobe. This name is not visible to partners or customers. For example, `Moviestar destination server`." # protocol: # type: "string" # title: "Destination Server protocol" # description: "Defines Destination Server protocol as HTTP or FTP." destinationServerType: type: "string" example: "URL_BASED" title: "Destination Server type" description: "Set this value according to your destination platform. Supported values are `URL_BASED` for streaming destinations, `FILE_BASED_SFTP` for SFTP destinations, `FILE_BASED_S3` for Amazon S3 destinations, `FILE_BASED_ADLS_GEN2` for Azure Data Lake Storage Gen2 destinations, `FILE_BASED_AZURE_BLOB` for Azure Blob Storage destinations, `FILE_BASED_DLZ` for Data Landing Zone destinations, and `FILE_BASED_GOOGLE_CLOUD` for Google Cloud Storage destinations." enum: - "URL_BASED" - "FILE_BASED_SFTP" - "FILE_BASED_S3" - "FILE_BASED_ADLS_GEN2" - "FILE_BASED_AZURE_BLOB" - "FILE_BASED_DLZ" - "FILE_BASED_GOOGLE_CLOUD" # requiresAggregation: How partner can define Aggregation policy ? # type: boolean # title: "Requires Aggregation" # description: "Sets if we need an aggregation policy for this flow" # aggregationPolicyId: # type: "string" # title: "Aggregation Policy Id" # description: "The key for the policy in the aggregation service for this flow" # qos: # type: "object" # title: "Quality of service" # description: "Quality of service , needed by the iris backend to determine" # queue for streaming # properties: # name: # type: "string" urlBasedDestination: type: "object" title: "HTTP Settings" description: "Defines protocol details and template for an HTTP URL with port and path." properties: url: $ref: "#/components/schemas/templateStringUrl" required: - "url" fileBasedSFTPDestination: type: "object" title: "SFTP Settings" description: "Defines SFTP protocol details." properties: rootDirectory: type: "object" title: "Root Directory" description: "The path to the directory that will host the exported files. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"Storage/MyDirectory\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" hostName: type: "object" title: "Host Name" description: "The host name of your SFTP server. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"my.hostname.com\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" port: type: "integer" description: "The SFTP file server port." example: 22 encryptionMode: type: "string" description: "Indicates whether to use file encryption. Supported values: `PGP`, `None`." example: "PGP" enum: - "PGP" - "None" required: - "rootDirectory" - "hostName" fileBasedS3Destination: type: "object" title: "S3 Settings" description: "Defines S3 protocol details." properties: bucket: type: "object" title: "Bucket" description: "The name of the Amazon S3 bucket to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"MyBucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" path: type: "object" title: "Path" description: "The path to the Amazon S3 bucket to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"/path/to/MyBucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "bucket" - "path" fileBasedAdlsGen2Destination: type: "object" title: "Azure Data Lake Storage Gen2 Settings" description: "Defines Azure Data Lake Storage Gen2 protocol details." properties: path: type: "object" title: "Path" description: "The path to your Azure Data Lake Storage Gen2 storage folder. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `abfs://@.dfs.core.windows.net//`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "path" fileBasedAzureBlobDestination: type: "object" title: "Azure Blob Storage Settings" description: "Defines Azure Blob Storage protocol details." properties: path: type: "object" title: "Path" description: "The path to your Azure Blob storage. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `https://myaccount.blob.core.windows.net/`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" container: type: "object" title: "Container" description: "The name of the Azure Blob Storage container to be used for this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `myContainer`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "path" - "container" fileBasedDlzDestination: type: "object" title: "Data Landing Zone Settings" description: "Defines Data Landing Zone protocol details." properties: path: type: "object" title: "Path" description: "The path to the destination folder that will host the exported files." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" useCase: type: "string" title: "Use Case" description: "*Required*. Set this to `dlz_destination`. This property identifies the destination as a Data Landing Zone destination. This property is only used when creating a Data Landing Zone destination." example: "dlz_destination" required: - "path" - "useCase" fileBasedGoogleCloudStorageDestination: type: "object" title: "Google Cloud Storage Settings" description: "Defines Google Cloud Storage protocol details." properties: bucket: type: "object" title: "Bucket" description: "The name of the Google Cloud Storage bucket to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"my-bucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" path: type: "object" title: "Path" description: "The path to the Google Cloud Storage folder to be used by this destination. This can either be a templatized field which will read the value from the customer data fields filled in by the user, or a hard-coded value, such as `\"/path/to/my-bucket\"`." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" required: - "bucket" - "path" httpTemplate: type: "object" title: "Http Template" description: "Defines the outgoing HTTP request for streaming delivery or dynamic schema and dropdown retrieval." properties: requestBody: $ref: "#/components/schemas/templateStringBody" httpMethod: type: "string" example: "POST" description: "The method that Adobe will use in calls to your server, to request a new access token. " enum: - "GET" - "PUT" - "POST" - "DELETE" - "PATCH" - "OPTIONS" - "HEAD" queryParameters: $ref: "#/components/schemas/templateStringQueryParameters" contentType: type: "string" description: "Specifies the content type of the HTTP call to your access token endpoint.

For example: application/x-www-form-urlencoded or application/json." example: "application/json" headers: type: "array" items: $ref: "#/components/schemas/header" required: - "httpMethod" destinationServerAccessTokenRefresh: title: Destination server configuration to refresh tokens type: object properties: responseFields: type: array items: $ref: "#/components/schemas/namedTemplateString" validations: type: array items: $ref: "#/components/schemas/templatizedValidation" # name: # type: "string" # example: Your destination server # title: "Destination Server" # description: "Represents a friendly name of your server, visible only to Adobe. This name is not visible to partners or customers. For example, `Moviestar destination server`." # protocol: # type: "string" # title: "Destination Server protocol" # description: "Defines Destination Server protocol as HTTP or FTP." destinationServerType: type: "string" example: "URL_BASED" title: "Destination Server type" description: "`URL_BASED` is currently the only available option." # requiresAggregation: How partner can define Aggregation policy ? # type: boolean # title: "Requires Aggregation" # description: "Sets if we need an aggregation policy for this flow" # aggregationPolicyId: # type: "string" # title: "Aggregation Policy Id" # description: "The key for the policy in the aggregation service for this flow" # qos: # type: "object" # title: "Quality of service" # description: "Quality of service , needed by the iris backend to determine" # queue for streaming # properties: # name: # type: "string" urlBasedDestination: type: "object" title: "HTTP Settings" description: "Defines protocol details and template for an HTTP URL with port and path." properties: url: $ref: "#/components/schemas/templateStringUrlRefreshToken" required: - "url" # fileBasedSFTPDestination: # type: "object" # title: "FTP Settings" # description: "Defines FTP protocol details." # properties: # hostname: # $ref: "#/components/schemas/templateString" # port: # type: "integer" # rootDirectory: # $ref: "#/components/schemas/templateString" # moveToWhenCompleted: # $ref: "#/components/schemas/templateString" # tmpFileRename: # type: "integer" # encryptionMode: # type: "string" # filenameSuffix: # $ref: "#/components/schemas/templateString" # required: # - "hostname" # - "port" # fileBasedS3Destination: # type: "object" # title: "S3 Settings" # description: "Defines S3 protocol details." # properties: # bucket: # $ref: "#/components/schemas/templateString" # path: # $ref: "#/components/schemas/templateString" # required: # - "bucket" # - "path" httpTemplate: type: "object" title: "Http Template" description: "Defines fields in the HTTP template. The fields in this object build the HTTP message to your destination, which includes headers, query parameters, and a request body." properties: requestBody: $ref: "#/components/schemas/templateStringBodyRefreshToken" httpMethod: type: "string" example: "POST" description: "The method that Adobe will use in calls to your server. " enum: - "GET" - "PUT" - "POST" - "DELETE" - "PATCH" - "OPTIONS" - "HEAD" queryParameters: $ref: "#/components/schemas/templateStringQueryParametersRefreshToken" contentType: type: "string" description: "The content type that your server accepts. This value is most likely `application/json`." example: "application/json" headers: type: "array" items: $ref: "#/components/schemas/header" required: - "httpMethod" #fileTemplate: # type: "object" # title: "File Template" # description: "Defines fields in file template. Currently file type is not supported." #do validation in API # properties: # filename: # $ref: "#/components/schemas/templateString" # header: # $ref: "#/components/schemas/templateString" # dataRow: # $ref: "#/components/schemas/templateString" # maxFileSizeMB: # type: "string" # compression: # type: "string" # infoReceipt: # type: "string" # md5Receipt: # type: "string" response: properties: instanceId: type: "string" example: "2307ec2b-4798-45a4-9239-5d0a2fb0ed67" title: "Instance ID" description: "The unique ID of an object." createdDate: type: "string" example: "2020-11-17T06:49:24.331012Z" title: "Created date" description: "Created date in UTC." lastModifiedDate: type: "string" example: "2020-11-17T06:49:24.331012Z" title: "Last modified date" description: "Last update date in UTC." destinationResponse: allOf: # Combines the BasicErrorModel and the inline model - $ref: "#/components/schemas/response" - $ref: "#/components/schemas/destination" destinationServerResponse: allOf: # Combines the BasicErrorModel and the inline model - $ref: "#/components/schemas/response" - $ref: "#/components/schemas/destinationServer" audienceTemplateResponse: allOf: # Combines the BasicErrorModel and the inline model - $ref: "#/components/schemas/response" - $ref: "#/components/schemas/audienceTemplate" credentialResponse: allOf: # Combines the BasicErrorModel and the inline model - $ref: "#/components/schemas/response" - $ref: "#/components/schemas/credential" templatingStrategy: title: "Template Transformation Type" example: "PEBBLE_V1" description: "If `templatingStrategy` is `PEBBLE_V1`, define the value in the respective template. If `templatingStrategy` is `NONE`, define a constant value." type: "string" enum: # - "STRINGTEMPLATE_V1" - "PEBBLE_V1" - "NONE" # - "MAPPER" templateString: type: object required: [templatingStrategy, value] description: "Define any string as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" title: "value" description: "**For URLs**: Fill in the address of the API endpoint that Experience Platform should connect to. If `templatingStrategy` is `PEBBLE_V1`, define the value in the respective template. If `templatingStrategy` is `NONE`, define a constant value.

**For the HTTP template request body**: This string is the character-escaped version that transforms the data of Platform customers to the format your service expects.

  • For information on how to write the template, read the [Using templating section](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#using-templating).
  • For more information about character escaping, refer to the [RFC JSON standard, section seven](https://tools.ietf.org/html/rfc8259#section-7).
  • For an example of a simple transformation, refer to the [Profile Attributes](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#attributes) transformation.
" # mappingSetId: # type: "string" # title: "mappingSetId" # description: "Mapping Set ID for MAPPER templatingStrategy." # mapperVersion: # type: "string" # title: "mapperVersion" # description: "Mapper API version for MAPPER templatingStrategy." templateStringUrl: type: object required: [templatingStrategy, value] description: "Define any string in URLs as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "https://api.moviestar.com/data/{{customerData.region}}/items" title: "value" description: "Fill in the address of the API endpoint that Experience Platform should connect to.
  • Use `PEBBLE_V1` if Experience Platform needs to transform the URL in the value field below. Use this option if you have an endpoint like: `https://api.moviestar.com/data/{{customerData.region}}/items`, where users must select the endpoint region from the Experience Platform UI.
  • Use `NONE` if no transformation is needed on the Adobe side, for example if you have an endpoint like: `https://api.moviestar.com/data/items`.
" templateStringBody: type: object required: [templatingStrategy, value] description: "Define any string in HTTP message bodies as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if input.profile.segmentMembership.ups is not empty %} , \"AEPSegments\": { \"add\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"realized\" or segment.value.status == \"existing\" %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ], \"remove\": [ {% for segment in input.profile.segmentMembership.ups %} {% if segment.value.status == \"exited\" %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.segmentAliases[segment.key] }}\" {% endif %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }" title: "value" description: " This string is the character-escaped version that transforms the data of Platform customers to the format your service expects.

  • For information on how to write the template, read the [Using templating section](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#using-templating).
  • For more information about character escaping, refer to the [RFC JSON standard, section seven](https://tools.ietf.org/html/rfc8259#section-7).
  • For an example of a simple transformation, refer to the [Profile Attributes](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#attributes) transformation.
Use `PEBBLE_V1` and define the value in the respective template. If no message transformation is needed and customers can use the source XDM input schema as the final output to your destination, use `{{ input.profile | raw }}` as request body value.

" templateStringQueryParameters: type: object required: [templatingStrategy, value] description: "Define any string in HTTP query parameters as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "https://api.moviestar.com/data/{{customerData.region}}/items" title: "value" description: "Enter any query parameters that will be appended in the call to your destination server. If `templatingStrategy` is `PEBBLE_V1`, define the value in the respective template. If `templatingStrategy` is `NONE`, define a constant value.

  • For information on how to write the template, read the [Using templating section](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#using-templating).
  • For more information about character escaping, refer to the [RFC JSON standard, section seven](https://tools.ietf.org/html/rfc8259#section-7).
  • For an example of a simple transformation, refer to the [Profile Attributes](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#attributes) transformation.
" templateStringHeaders: type: object required: [templatingStrategy, value] description: "Define any string in HTTP message headers as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "https://api.moviestar.com/data/{{customerData.region}}/items" title: "value" description: "Enter any headers that will be used in the call to your destination server. If `templatingStrategy` is `PEBBLE_V1`, define the value in the respective template. If `templatingStrategy` is `NONE`, define a constant value.

  • For information on how to write the template, read the [Using templating section](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#using-templating).
  • For more information about character escaping, refer to the [RFC JSON standard, section seven](https://tools.ietf.org/html/rfc8259#section-7).
  • For an example of a simple transformation, refer to the [Profile Attributes](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-server/message-format#attributes) transformation.
" templateStringValidationsActualValue: type: object required: [templatingStrategy, value] description: "Define any string as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "{{response.body.access_token is empty }}" title: "value" description: "Use templating language to access fields in the HTTP response. See the [OAuth 2 templating conventions](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/oauth2-authorization#templating-conventions)." templateStringValidationsExpectedValue: type: object required: [templatingStrategy, value] description: "Define any string as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "false" title: "value" description: "Indicates the expected value of the field that is validated." templateStringUrlRefreshToken: type: object required: [templatingStrategy, value] description: "Define any string in HTTP message bodies as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "https://{{authData.customerId}}.yourdestination.com/identity/oauth/token" title: "value" description: "The URL where Experience Platform requests the access token." templateStringBodyRefreshToken: type: object required: [templatingStrategy, value] description: "Define any string in HTTP message bodies as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "{{ formUrlEncode('grant_type', 'client_credentials', 'client_id', authData.clientId, 'client_secret', authData.clientSecret) | raw }}" title: "value" description: "Use templating language to access fields in the HTTP request to the access token endpoint. See the [OAuth 2 templating conventions](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/oauth2-authorization#templating-conventions)." templateStringQueryParametersRefreshToken: type: object required: [templatingStrategy, value] description: "Define any string in HTTP query parameters as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "https://api.moviestar.com/data/{{customerData.region}}/items" title: "value" description: "Enter any query parameters that will be appended in the HTTP request to the access token endpoint. If `templatingStrategy` is `PEBBLE_V1`, define the value in the respective template. If `templatingStrategy` is `NONE`, define a constant value." templateStringHeadersRefreshToken: type: object required: [templatingStrategy, value] description: "Define any string in HTTP message headers as a Pebble template or use a constant value." properties: templatingStrategy: $ref: "#/components/schemas/templatingStrategy" value: type: "string" example: "https://api.moviestar.com/data/{{customerData.region}}/items" title: "value" description: "Enter any headers that will be used in the HTTP request to the access token endpoint." header: type: "object" required: [header, value] description: "Define any string in HTTP message headers as a Pebble template or use a constant value." properties: header: type: "string" example: "sample-header-requested-by-your-endpoint" value: $ref: "#/components/schemas/templateStringHeaders" identityNamespaces: type: "object" title: "Identity Namespaces" description: "List of allowed identity namespaces." additionalProperties: $ref: "#/components/schemas/identityNamespace" identityNamespace: type: object properties: acceptsAttributes: type: boolean example: true description: "Indicates if customers can map standard profile attributes to the identity that you are configuring." acceptsCustomNamespaces: type: boolean example: true description: "Indicates if customers can map identities belonging to [custom namespaces](https://experienceleague.adobe.com/en/docs/experience-platform/identity/features/namespaces#create-namespaces) to the identity that you are configuring." transformation: type: string description: "Used, for example, when the Platform customer has plain email addresses as an attribute and your platform only accepts hashed emails. This is where you would provide the transformation that needs to be applied (for example, transform the email to lowercase, then hash)." acceptedGlobalNamespaces: type: object example: { "Email":{ }, "IDFA":{ } } description: "Indicates which [standard identity namespaces](https://experienceleague.adobe.com/en/docs/experience-platform/identity/features/namespaces#standard) (for example: IDFA, GAID, Email) customers can map to the identity that you are configuring.
When you use `acceptedGlobalNamespaces`, you can use `requiredTransformation:sha256(lower($))` to lowercase and hash email addresses or phone numbers." additionalProperties: type: object properties: requiredTransformation: type: string example: "sha256(lower($))" description: "Indicates how values should be transformed. For example, use `requiredTransformation:sha256(lower($))`` to lowercase and hash email addresses or phone numbers." customerDataField: type: "object" required: [name, type] properties: hidden: type: boolean description: "Whether to hide this field in the user interface." readOnly: type: boolean description: "Whether the customer can change the field value." unique: type: boolean description: "Require a unique value across destination dataflows in the customer organization." properties: type: array description: "Nested fields for an object field. Nested fields can also be required." items: $ref: "#/components/schemas/customerDataField" namedEnum: type: array description: "Dropdown options with separate display names and values." items: type: object required: [name, value] properties: name: type: string value: oneOf: - type: string - type: integer - type: boolean dynamicEnum: $ref: "#/components/schemas/dynamicEnum" conditional: type: object required: [field, operator, value] properties: field: type: string operator: type: string enum: [EQUALS] value: oneOf: - type: string - type: integer - type: boolean name: type: "string" example: "endpointsInstance" description: "Provide a name for the custom field you are introducing." type: type: "string" example: "string" description: "Indicates what type of custom field you are introducing. Accepted values are string, object, integer." enum: - "string" - "object" - "integer" title: type: "string" example: "Select endpoint" description: "Indicates the name of the field, as it is seen by customers in the Experience Platform user interface." description: type: "string" example: "Moviestar manages several instances across the globe for REST endpoints that our customers are provisioned for. Select your endpoint in the dropdown list." description: "Provide a description for the custom field." # items: # $ref: "#/components/schemas/customerDataField" isRequired: type: "boolean" example: true description: "Indicates if this field is required in the destination setup workflow." default: description: "Default field value. For a dropdown, use one of the configured option values." oneOf: - type: string - type: integer - type: object enum: type: "array" example: [ "US", "EU", "APAC", "NZ" ] description: "Renders the custom field as a dropdown menu and lists the options available to the user." items: oneOf: - type: string - type: integer - type: object pattern: type: "string" example: "^[A-Za-z]+$" description: "Enforces a pattern for the custom field, if needed. Use regular expressions to enforce a pattern. For example, if your customer IDs don’t include numbers or underscores, enter `^[A-Za-z]+$`` in this field." format: type: "string" example: "password" description: "The format associated with the data. If you use `password` as format, Experience Platform will automatically treat the data field value as sensitive information and encrypt it." customerAuthenticationConfiguration: type: object properties: authType: title: "Customer Authentication Type" example: "BEARER" description: "Defines Customer Authentication type." type: string enum: - "S3" - "SFTP_WITH_SSH_KEY" - "SFTP_WITH_PASSWORD" - "OAUTH1" - "BASIC" - "BEARER" - "AZURE_CONNECTION_STRING" - "AZURE_SERVICE_PRINCIPAL" - "GOOGLE_CLOUD_STORAGE" options: type: object additionalProperties: {} required: - "authType" # basicAuthenticationConfiguration: # type: object # allOf: # - $ref: '#/components/schemas/customerAuthenticationConfiguration' # properties: # usernameAlias: # type: string # passwordAlias: # type: string bearerAuthenticationConfiguration: type: object allOf: - $ref: '#/components/schemas/customerAuthenticationConfiguration' # s3AuthenticationConfiguration: # type: object # allOf: # - $ref: '#/components/schemas/customerAuthenticationConfiguration' # sftpWithSSHConfiguration: # type: object # allOf: # - $ref: '#/components/schemas/customerAuthenticationConfiguration' # sftpWithPasswordConfiguration: # type: object # allOf: # - $ref: '#/components/schemas/customerAuthenticationConfiguration' # oauth1CustomerAuthenticationConfiguration: # type: object # allOf: # - $ref: '#/components/schemas/customerAuthenticationConfiguration' # properties: # requestTokenUrl: # type: string # accessTokenUrl: # type: string # authorizationUrl: # type: string # userProfileUrl: # type: string # nonce: # type: string # signatureMethod: # type: string oauth2CustomerAuthenticationConfiguration: type: object description: "Configure OAuth 2 using the [Authorization Code](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/oauth2-authorization#authorization-code), [Password](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/oauth2-authorization#oauth2-password-grant), or [Client Credentials](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/oauth2-authorization#oauth2-client-credentials-grant) grant. See the [OAuth 2 setup instructions](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/oauth2-authorization#how-to-setup)." required: [authType] properties: authType: type: string enum: [OAUTH2] options: type: object additionalProperties: true properties: useBasicAuth: type: boolean default: false description: "When true, send client credentials in the Authorization header using Basic authentication. Otherwise send client_id and client_secret in the token request body." grant: type: string title: OAuth 2 Grant description: OAuth 2 grant type used for authentication. enum: - OAUTH2_AUTHORIZATION_CODE - OAUTH2_PASSWORD - OAUTH2_CLIENT_CREDENTIALS accessTokenUrl: title: Access token URL description: The URL on your side, which issues access tokens and, optionally, refresh tokens. example: "https://api.moviestar.com/OAuth/access_token" type: string authorizationUrl: title: Authorization URL description: For the Authorization Code grant, redirect the customer to this URL to sign in. example: "https://www.moviestar.com/dialog/OAuth" type: string # userProfileUrl: # title: User Profile URL # type: string scope: type: array description: Optional. Set the scope of what operations the access token allows Experience Platform to perform on your resources. For example, `“read, write”`. example: ["read", "write"] items: type: string refreshTokenUrl: title: Refresh Token URL description: Optional. The URL on your side, which issues refresh tokens. Often, the `refreshTokenUrl` is the same as the `accessTokenUrl`. Note that for Authorization Code grant, if this URL is not provided, Experience Platform will not attempt to refresh expired access tokens by default. example: "https://api.moviestar.com/OAuth/access_token" type: string clientId: title: Client ID description: The client ID that your system assigns to Adobe Experience Platform. example: "Experience-Platform-client-id" type: string clientSecret: type: string title: Client Secret description: The client secret that your system assigns to Adobe Experience Platform. Note that this value will be automatically encrypted by Experience Platform. example: "The client secret that your system assigns to Adobe Experience Platform." authenticationDataFields: type: array items: $ref: "#/components/schemas/authenticationDataField" accessTokenRequest: description: "Use the `accessTokenRequest` object to configure an access token refresh mechanism." $ref: "#/components/schemas/destinationServerAccessTokenRefresh" validations: type: array items: $ref: "#/components/schemas/templatizedValidation" accessTokenResponsePath: type: string description: "You can provide customized field names for your API response, which will map to the Experience Platform standard fields. For example, if you have a field `token_of_access : 11//abhsioeyzh278323`, you would configure it in the destination as `accessTokenResponsePath: token_of_access` " default: "access_token" example: "access_token" refreshTokenResponsePath: type: string description: "You can provide customized field names for your API response, which will map to the Experience Platform standard fields. For example, if you have a field `refresh_code : ejyzxnsjd//11//22fdsf`, you would configure it in the destination as `refreshTokenResponsePath: refresh_code` " default: "refresh_token" example: "refresh_token" expiresInResponsePath: type: string description: "You can provide customized field names for your API response, which will map to the Experience Platform standard fields. For example, if you have a field `best_if_used_in : 3600`, you would configure it in the destination as `expiresInPath: best_if_used_in` " default: "expires_in" example: "expires_in" templatizedValidation: type: object title: Templatized Validation description: If Experience Platform needs to validate user-level tokens (supplied by the customer) before saving them, you can use a validation template as shown below. The validations array specifies a set of templates that can validate any part of the returned API Token response. The expected and actual values can be provided as string templates. Note that the expected value can be a regex(or a template that will resolve to one). properties: name: type: string description: Indicates the name you provided for this validation. example: "access_token validation" description: type: string description: description example: "Validates the access token parameter." actualValue: $ref: "#/components/schemas/templateStringValidationsActualValue" expectedValue: $ref: "#/components/schemas/templateStringValidationsExpectedValue" namedTemplateString: type: object allOf: - $ref: '#/components/schemas/templateString' title: Named Template String description: A template string with a name properties: name: title: Name of the template type: string authenticationDataField: title: Authentication Data Field description: The definition for a data field used to capture authentication related information. type: object properties: name: type: string title: type: string description: type: string type: type: string enum: [string, boolean, integer] isRequired: type: boolean format: type: string description: "Use password to encrypt the value and hide customer input." fieldType: type: string enum: [CUSTOMER, PARTNER] description: "Input origin named fieldType in the OAuth parameter table. The configuration examples use source." source: type: string title: Source description: The source of data. For customer supplied values (foe example username), use `CUSTOMER`; For values supplied at the time of destination configuration, the type is `PARTNER`. enum: - 'CUSTOMER' - 'PARTNER' authenticationResponsePath: type: string title: Authentication Response Path description: If the value for the field will be coming from an API response, the path can be specified here. For example, the `accessToken` field has the path 'access_token' by default. value: title: Value description: "The field value, matching the configured string, boolean, or integer type." oneOf: - type: string - type: boolean - type: integer audienceTemplate: type: object properties: # audience: # type: object # allOf: # - $ref: '#/components/schemas/audience' # credential: # type: object # allOf: # - $ref: '#/components/schemas/credentialForAudienceTemplate' metadataTemplate: type: object allOf: - $ref: '#/components/schemas/metadataTemplate' validations: type: array description: "Runs validations for any fields in the template configuration before making a call to the partner API. For example, you could validate that the user’s account ID is input correctly." items: $ref: "#/components/schemas/validation" # audience: # type: object # allOf: # - $ref: '#/components/schemas/audience' # properties: # context: # type: string # name: # type: string # description: # type: string # sid: # type: string # account: # type: string # accountType: # type: string # externalAudienceId: # type: string # imsOrgId: # type: string # metadata: # type: object # additionalProperties: # type: string # credentialForAudienceTemplate: # type: object # title: credential # properties: # clientId: # type: string # clientSecret: # type: string # token: # type: string # tokenSecret: # type: string # refreshToken: # type: string # developerToken: # type: string # clientCustomerId: # type: string # authType: # type: string # enum: # - "OAUTH1" # - "OAUTH2" # - "OAUTH2_REFRESH" # metadata: # type: object # additionalProperties: # type: string metadataTemplate: type: object description: "Contains the settings for your audience metadata template." properties: notify: $ref: '#/components/schemas/audienceRestTemplate' patch: $ref: '#/components/schemas/audienceRestTemplate' name: type: string description: "The name of the audience metadata template for your destination. This name will appear in any partner-specific error message in the Experience Platform user interface, followed by the error message parsed from `metadataTemplate.create.responseErrorFields`." create: description: "Includes all required components (URL, HTTP method, headers, request and response body) to make an HTTP call to your API, to programmatically create segments/audiences in your platform and sync the information back to Adobe Experience Platform." $ref: '#/components/schemas/audienceRestTemplate' update: description: "Includes all required components (URL, HTTP method, headers, request and response body) to make an HTTP call to your API, to programmatically update segments/audiences in your platform and sync the information back to Adobe Experience Platform." $ref: '#/components/schemas/audienceRestTemplate' delete: description: "Includes all required components (URL, HTTP method, headers, request and response body) to make an HTTP call to your API, to programmatically delete segments/audiences in your platform." $ref: '#/components/schemas/audienceRestTemplate' validate: $ref: '#/components/schemas/audienceRestTemplate' createDestination: description: "Includes all required components (URL, HTTP method, headers, request and response body) to make an HTTP call to your API, to programmatically create the destination/connection itself in your platform, as opposed to an individual segment/audience." $ref: '#/components/schemas/audienceRestTemplate' updateDestination: description: "Includes all required components (URL, HTTP method, headers, request and response body) to make an HTTP call to your API, to programmatically update the destination/connection itself in your platform, as opposed to an individual segment/audience." $ref: '#/components/schemas/audienceRestTemplate' deleteDestination: description: "Includes all required components (URL, HTTP method, headers, request and response body) to make an HTTP call to your API, to programmatically delete the destination/connection itself in your platform, as opposed to an individual segment/audience." $ref: '#/components/schemas/audienceRestTemplate' audienceRestTemplate: type: object description: "Includes all required components (URL, HTTP method, headers, request and response body) to make an HTTP call to your API, to programmatically create, update, delete, or validate segments/audiences in your platform and sync the information back to Experience Platform." properties: url: type: string example: "https://adsapi.moviestar.com/v1/adaccounts/{{customerData.accountId}}/segments" description: "The URL and endpoint of your API, which is used for creating, updating, deleting, or validating audiences/segments in your platform." httpMethod: type: string example: "POST" description: "The method used on your endpoint to programmatically create, update, delete, or validate the segment/audience in your destination. For example: `POST`, `PUT`, `DELETE`." headers: type: array example: [ { "value":"application/json", "header":"Content-Type" }, { "value":"Bearer {{oauth2ServiceAccessToken}}", "header":"Authorization" } ] description: 'Specifies any HTTP headers that should be added to the call to your API.' items: $ref: "#/components/schemas/headerKeyValuePair" requestBody: type: object example: { "json":{ "segments":[ { "name":"{{segment.name}}", "description":"{{segment.description}}", "source_type":"FIRST_PARTY", "ad_account_id":"{{customerData.accountId}}", "retention_in_days":180 } ] } } description: "Specifies the content of the message body that should be sent to your API. The parameters that should be added to the `requestBody` object depend on which fields your API accepts. For an example, refer to the [first template example](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/audience-metadata-management#configuration-examples) in the Audience metadata functionality document." responseFields: type: array example: [ { "value":"{{body.segments[0].segment.id}}", "name":"externalAudienceId" } ] description: "Specify any response fields that your API returns when called. For an example, refer to the template examples in the [Audience metadata functionality document](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/audience-metadata-management#configuration-examples)." items: $ref: "#/components/schemas/templateKeyValuePair" responseErrorFields: type: array example: [ { "value":"{{root}}", "name":"message" } ] description: "Specify any error response fields that your API returns when called. For an example, refer to the template examples in the [Audience metadata functionality document](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/audience-metadata-management#configuration-examples)." items: $ref: "#/components/schemas/templateKeyValuePair" validation: type: object properties: field: type: string description: "Indicates if validations should be run for any fields before API calls are made to your destination. For example, you can use `{{validations.accountId}}` to validate the user’s account ID." example: "Account ID" regex: type: string description: "Indicates how the field should be structured in order for the validation to pass." example: "^[0-9]*$" headerKeyValuePair: type: object required: [header, value] properties: header: type: string description: "Indicates a header that should be appended in calls to your destination." value: type: string description: "Indicates the value of the header that should be appended in calls to your destination." templateKeyValuePair: type: object properties: name: type: string description: "The name of the response field that your API returns when called." value: type: string description: "The content of the response field that your API returns when called." configurableAggregation: title: Configurable Aggregation description: "Required parameters to set up configurable aggregation." type: object properties: aggregationPolicyId: type: string nullable: true description: "Optional policy ID shown as null in the streaming configuration examples." splitUserById: type: boolean example: false description: "Use this flag if the call to the destination should be split by identity. Set this flag to true if your server only accepts one identity per call, for a given namespace." maxBatchAgeInSecs: type: integer minimum: 301 maximum: 3600 example: 3000 description: "Maximum batch age in seconds. Must be greater than 300 and no greater than 3600. Experience Platform sends a request when either this age or maxNumEventsInBatch is reached. See the [aggregation policy reference](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/aggregation-policy#configurable-aggregation)." maxNumEventsInBatch: type: integer minimum: 1000 maximum: 10000 example: 5000 description: "Maximum events per batch, from 1000 to 10000. Experience Platform sends a request when either this event count or maxBatchAgeInSecs is reached. See the [configurable aggregation reference](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/functionality/destination-configuration/aggregation-policy#configurable-aggregation)." aggregationKey: type: object nullable: true description: "Allows you to aggregate the exported profiles mapped to the destination based on the parameters below: 1.segment ID, 2.segment status,3. identity namespace." properties: includeSegmentId: type: boolean example: true description: "Set this to true if you want to group profiles exported to your destination by segment ID." includeSegmentStatus: type: boolean example: true description: "You must set both `includeSegmentId:true` and `includeSegmentStatus:true` if you want to group profiles exported to your destination by segment ID AND segment status." includeIdentity: type: boolean example: true description: "Set this to true if you want to group profiles exported to your destination by identity namespace." oneIdentityPerGroup: type: boolean example: false description: "Use this parameter to specify if you want the exported profiles to be aggregated into groups of a single identity (GAID, IDFA, phone numbers, email, etc.)" groups: type: array nullable: true description: "Create lists of identity groups if you want to group profiles exported to your destination by groups of identity namespace. For example, you could combine profiles that contain the IDFA and GAID mobile identifiers into one call to your destination and emails into another by using the configuration in the example." items: $ref: '#/components/schemas/IdentityGroup' IdentityGroup: type: object example: {"namespaces": ["IDFA", "GAID"]} properties: namespaces: type: array items: type: string JsonNode: type: object getSampleProfileResponse: type: object additionalProperties: true properties: segmentMembership: description: A map object which describes the individual’s segment memberships. For more information on `segmentMembership`, read [Segment Membership Details](https://experienceleague.adobe.com/docs/experience-platform/xdm/field-groups/profile/segmentation.html?lang=en). type: object example: { "ups": { "03fb9938-8537-4b4c-87f9-9c4d413a0ee5": { "lastQualificationTime": "2021-06-30T18:40:07.591378Z", "status": "realized" }, "27e05542-d6a3-46c7-9c8e-d59d50229530": { "lastQualificationTime": "2021-06-30T18:40:07.591380Z", "status": "realized" } } } additionalProperties: type: object description: "Audience membership records keyed by audience ID within this namespace." additionalProperties: type: object properties: lastQualificationTime: type: string format: date-time status: type: string enum: [existing, realized, exited] attributes: type: object additionalProperties: true description: Attributes present on the profile. example: { "personalEmail":{ "address":"john.smith@abc.com" } } identityMap: description: A map-type field that describes the various identity values for an individual, along with their associated namespaces. For more information on `identityMap`, read [Basis of schema composition](https://experienceleague.adobe.com/docs/experience-platform/xdm/schema/composition.html?lang=en#identityMap). type: object example: { "ECID": [ { "id": "ECID-7VEsJ" } ] } additionalProperties: type: array items: type: object properties: id: type: string InputProfileList: type: object properties: profiles: description: "Optional source-schema XDM profiles for destination testing. If omitted, Experience Platform generates sample profiles. To create profiles for this request, use the [sample profile generation API](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/sample-profile-generation-api) with destinationInstanceId." example: [ { "segmentMembership":{ "ups":{ "374a9a6c-c719-4cdb-a660-155a2838e6d6":{ "lastQualificationTime":"2021-05-13T12:16:27.248585Z", "status":"realized" }, "896f8776-9498-47b4-b994-51cb3f61c2c5":{ "lastQualificationTime":"2021-05-13T12:16:27.248605Z", "status":"realized" } } }, "identityMap":{ "ECID":[ { "id":"ECID-Z3i2t" } ], "external_id":[ { "id":"external_id-h29Fq" } ] }, "attributes":{ "firstName":{ "value":"John" } } } ] type: array items: $ref: '#/components/schemas/JsonNode' testingTemplateRender: type: object required: [destinationId, template] properties: destinationId: description: The ID of the destination configuration for which you are rendering exported data. example: "2307ec2b-4798-45a4-9239-5d0a2fb0ed67" type: string template: description: The character-escaped version of the template based on which you are rendering exported data. example: "{# THIS is an example template for multiple profiles #}\r\n{\r\n \"profiles\": [\r\n {% for profile in input.profiles %}\r\n {\r\n \"identities\": [\r\n {% for email in profile.identityMap.email %}\r\n {\r\n \"type\": \"email\",\r\n \"id\": \"{{ email.id }}\"\r\n }{% if not loop.last %},{% endif %}\r\n {% endfor %}\r\n\r\n {# Add a comma only if we have both emails and external_ids. #}\r\n {% if profile.identityMap.email is not empty and profile.identityMap.external_id is not empty %}\r\n ,\r\n {% endif %}\r\n\r\n {% for external in profile.identityMap.external_id %}\r\n {\r\n \"type\": \"external_id\",\r\n \"id\": \"{{ external.id }}\"\r\n }{% if not loop.last %},{% endif %}\r\n {% endfor %}\r\n ],\r\n \"AdobeExperiencePlatformSegments\": {\r\n \"add\": [\r\n {% for segment in profile.segmentMembership.ups | added %}\r\n \"{{ segment.key }}\"{% if not loop.last %},{% endif %}\r\n {% endfor %}\r\n ],\r\n \"remove\": [\r\n {# Alternative syntax for filtering segments by status: #}\r\n {% for segment in removedSegments(profile.segmentMembership.ups) %}\r\n \"{{ segment.key }}\"{% if not loop.last %},{% endif %}\r\n {% endfor %}\r\n ]\r\n }\r\n }{% if not loop.last %},{% endif %}\r\n {% endfor %}\r\n ]\r\n}" type: string profiles: type: array description: Optionally, you can add profiles to the body of the call. To get sample profiles to use in the call, you can generate some by using the [Sample profile generation API](https://experienceleague.adobe.com/en/docs/experience-platform/destinations/destination-sdk/testing-api/streaming-destinations/sample-profile-generation-api#generate-sample-profiles-source-schema). items: $ref: '#/components/schemas/getSampleProfileResponse' testingTemplateRenderResponse: type: object properties: aggregationKey: type: object description: "Represents the policy by which profiles are aggregated in exports to your destination. Present only if the destination aggregation policy is set to `CONFIGURABLE_AGGREGATION`." properties: destinationInstanceId: type: string description: "The instance ID of the destination configuration for which profiles are rendered." example: "49966037-32cd-4457-a105-2cbf9c01826a" segmentId: type: string description: "The audience ID used as the aggregation key for the returned group of profiles." example: "segmentid1" segmentStatus: type: string description: "The audience membership status used as the aggregation key for the returned group of profiles." example: "realized" identityNamespaces: type: array description: "The identity namespaces used as the aggregation key for the returned group of profiles." items: type: string profiles: type: array description: "The profiles provided in the request, or the profiles automatically generated by Experience Platform if none were provided." items: $ref: '#/components/schemas/getSampleProfileResponse' output: type: string description: "The rendered profile or profiles, as a character-escaped string, based on the provided message transformation template." DestinationTestingResponse: type: object required: [results] properties: results: type: array items: $ref: '#/components/schemas/DestinationTestingProcessResultList' inputProfiles: type: array description: Returns the profiles that were sent in the test request to the destination endpoint. example: [ { "segmentMembership":{ "ups":{ "374a9a6c-c719-4cdb-a660-155a2838e6d6":{ "lastQualificationTime":"2021-05-13T12:16:27.248585Z", "status":"realized" }, "896f8776-9498-47b4-b994-51cb3f61c2c5":{ "lastQualificationTime":"2021-05-13T12:16:27.248605Z", "status":"realized" } } }, "identityMap":{ "ECID":[ { "id":"ECID-Z3i2t" } ], "external_id":[ { "id":"external_id-h29Fq" } ] }, "attributes":{ "firstName":{ "value":"John" } } } ] items: $ref: '#/components/schemas/getSampleProfileResponse' title: DestinationTestingResponse DestinationTestingProcessResultList: type: object properties: aggregationKey: description: The aggregation key used in the test call to your destination endpoint. type: object properties: destinationInstanceId: type: string description: "The destination instance ID of the destination that you are testing." example: segmentId: type: string description: "The ID of the segment which includes the profiles in the request." example: segmentStatus: type: string description: "The status of the segment which includes the profiles in the request." example: "realized" identityNamespaces: type: array description: "The identity namespaces of the profiles in the request." items: type: array items: type: string example: ["email", "phone"] httpCalls: type: array items: $ref: '#/components/schemas/DestinationTestingProcessResult' title: DestinationTestingProcessResultList DestinationTestingProcessResult: type: object description: "A summary of the HTTP call to the destination endpoint and the request received back from the endpoint." properties: traceId: type: string description: An ID used for debugging purposes, that Experience Platform adds to the response received from the destination. request: $ref: '#/components/schemas/DestinationTestingRequest' response: $ref: '#/components/schemas/IrisResponse' title: DestinationTestingProcessResult DestinationTestingRequest: type: object properties: body: type: string headers: $ref: '#/components/schemas/testingHeaders' method: type: string uri: type: string title: DestinationTestingRequest IrisResponse: type: object properties: body: type: string example: "{ \"attributes\": [ { \"external_id\": \"external_id-h29Fq\" , \"AdobeExperiencePlatformSegments\": { \"add\": [ \"Nirvana fans\" , \"RHCP fans\" ], \"remove\": [ ] } , \"key\": \"string\" } ] }" description: The body returned by the destination endpoint in response to the test call made by Experience Platform. code: type: string example: "200" description: The code returned by the destination endpoint in response to the test call made by Experience Platform. headers: type: array items: type: object additionalProperties: type: string example: [ { "Connection":"keep-alive" }, { "Content-Type":"application/json" }, { "Server":"nginx" }, { "Vary":"Origin,Accept-Encoding" }, { "transfer-encoding":"chunked" } ] description: The headers returned by the destination endpoint in response to the test call made by Experience Platform. title: IrisResponse publishedDestinationRequest: type: object required: [destinationId, destinationAccess] properties: destinationId: description: The destination ID of the destination configuration that you are submitting for publishing. Get the destination ID of a destination configuration by using the [Retrieve a list of destination configurations](#operation/listDestinations) operation. example: "49966037-32cd-4457-a105-2cbf9c01826a" type: string destinationAccess: description: Use `ALL` for your destination to appear in the catalog for all Experience Platform customers. type: string enum: - ALL # allowedOrgs: # description: If you use `"destinationAccess":"LIMITED"`, specify the Experience Platform organizations for which the destination will be available. # example: [ # "xyz@AdobeOrg", # "lmn@AdobeOrg" # ] # type: array # items: # type: string publishedDestination: type: object properties: destinationId: description: The destination ID of the destination configuration that you have submitted for publishing. example: "49966037-32cd-4457-a105-2cbf9c01826a" type: string # publishedConnectionSpecId: # type: string # publishedFlowSpecId: # type: string publishDetailsList: type: array items: $ref: '#/components/schemas/publishDetails' publishDetails: type: object properties: configId: description: The unique ID of the destination publish request for your submitted destination. example: "1230e5e4-4ab8-4655-ae1e-a6296b30f2ec" type: string allowedOrgs: description: Returns the Experience Platform organizations for which the destination is available.
  • For `"destinationType":"PUBLIC"`, this parameter returns `"*"`, which means that the destination is available for all Experience Platform organizations.
  • For `"destinationType":"DEV"`, this parameter returns the Organization ID of the organization which you used to author and test the destination.
example: [ "xyz@AdobeOrg", "*" ] type: array items: type: string status: description: The status of your destination publish request. Destinations with the value `PUBLISHED` are live and can be used by Experience Platform customers. type: string example: "TEST" enum: - TEST - REVIEW - APPROVED - PUBLISHED - DENIED - REVOKED - DEPRECATED destinationType: description: The type of destination. Values can be `DEV` and `PUBLIC`. `DEV` corresponds to the destination in your Experience Platform organization. `PUBLIC` corresponds to the destination that you have submitted for publishing. Think of these two options in Git terms, where the `DEV` version represents your local authoring branch and the `PUBLIC` version represents the remote main branch. type: string example: "PUBLIC" enum: - PUBLIC - DEV publishedDate: description: "Submission time in epoch form. The list example uses integer milliseconds. The specific publishing request example uses a string containing epoch seconds." example: 1630617746 oneOf: - type: string - type: integer format: int64 destinationServerListResponse: type: object properties: items: type: array items: $ref: '#/components/schemas/destinationServerResponse' testingHeaders: type: array items: type: object additionalProperties: type: string testingTemplateRenderResults: type: object properties: results: type: array items: $ref: '#/components/schemas/testingTemplateRenderResponse' fileBasedTemplateRenderRequest: type: object required: [destinationId, templates] properties: destinationId: type: string description: "Destination configuration ID returned by the authoring destinations API." templates: type: object description: "Templates keyed by a descriptive name." additionalProperties: type: string example: destinationId: "1230e5e4-4ab8-4655-ae1e-a6296b30f2ec" templates: bucket: "{{customerData.bucket}}" path: "{{customerData.bucket}}/{{customerData.path}}" fileBasedTemplateRenderResponse: type: object properties: results: type: object additionalProperties: type: string fileBasedDestinationTestingResponse: type: object required: [activations, results] properties: activations: type: array items: type: object properties: segment: type: string flowRun: type: string results: type: string description: "Relative results URL, including the flowRunIds query parameter. Use it to retrieve detailed activation results." example: "/authoring/testing/destinationInstance/fd3449fb-b929-45c8-9f3d-06b9d6aac328/results?flowRunIds=30d34875-e7ba-4520-ab6e-5705e01dfb16" inputProfiles: type: array items: $ref: '#/components/schemas/getSampleProfileResponse' fileBasedDestinationResults: type: object properties: items: type: array items: type: object properties: id: type: string flowId: type: string flowSpec: type: object properties: id: type: string version: type: string metrics: $ref: '#/components/schemas/activationMetrics' activities: type: array items: allOf: - $ref: '#/components/schemas/activationMetrics' - type: object properties: id: type: string name: type: string updatedAtUTC: type: integer format: int64 sourceInfo: type: object nullable: true targetInfo: type: object nullable: true predecessors: type: object nullable: true description: "Null in the documented activation response." _links: type: object additionalProperties: true activationMetrics: type: object properties: durationSummary: type: object properties: startedAtUTC: type: integer format: int64 description: "Start time in epoch milliseconds." completedAtUTC: type: integer format: int64 description: "Completion time in epoch milliseconds." latencySummary: type: object nullable: true sizeSummary: type: object additionalProperties: type: integer format: int64 properties: inputBytes: type: integer format: int64 outputBytes: type: integer format: int64 recordSummary: allOf: - $ref: '#/components/schemas/activationRecordCounts' - type: object properties: sourceSummaries: type: array items: $ref: '#/components/schemas/activationEntitySummary' targetSummaries: type: array items: $ref: '#/components/schemas/activationEntitySummary' fileSummary: type: object properties: inputFileCount: type: integer format: int64 outputFileCount: type: integer format: int64 statusSummary: type: object properties: status: type: string example: success extensions: type: object additionalProperties: type: string activationRecordCounts: type: object properties: inputRecordCount: type: integer format: int64 outputRecordCount: type: integer format: int64 createdRecordCount: type: integer format: int64 skippedRecordCount: type: integer format: int64 activationEntitySummary: type: object properties: id: type: string entitySummaries: type: array items: allOf: - $ref: '#/components/schemas/activationRecordCounts' - type: object properties: id: type: string parameters: authorization: name: Authorization description: 'The access token which can be copied from your Experience Platform integration, prefixed with "Bearer". For more information on how to obtain this value, visit the [getting started tutorial](http://www.adobe.com/go/destination-sdk-getting-started-en).' required: true schema: type: string in: header x-gw-ims-org-id: name: x-gw-ims-org-id description: 'The IMS Organization ID which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [getting started tutorial](http://www.adobe.com/go/destination-sdk-getting-started-en).' required: true schema: type: string in: header x-api-key: name: x-api-key description: 'The API key which can be copied from your Experience Platform integration. For more information on how to obtain this value, visit the [getting started tutorial](http://www.adobe.com/go/destination-sdk-getting-started-en).' required: true schema: type: string in: header x-sandbox-name: name: x-sandbox-name description: 'The name of the sandbox in which the operation will take place. See the [sandboxes overview](https://adobe.com/go/sandbox-overview-en) for more information. For more information on how to obtain this value, visit the [getting started tutorial](http://www.adobe.com/go/destination-sdk-getting-started-en)' required: true schema: type: string in: header