0

Could someone please point out the mistake in the below script?

var restapi_url = "https://XXXXX.rest.marketingcloudapis.com/automation/v1/dataextracts";

var restapi_payload = '{"name": "Test DE extract","key": "966D6D48-1AA4-4812-ABD6-7A2DC5B751D5","description": "Trying Update","dataExtractTypeId": "bb94a04d-9632-4623-be47-daabc3f588a6","fileSpec": "TestingUpdateActivity.csv","intervalType": 0,"dataFields": [{"name": "ColumnDelimiter","type": "string","value": ","},{"name": "DECustomerKey","type": "string","value": "6F29911C-2741-43B9-BC35-26D5CFBC7F74"},{"name": "HasColumnHeaders","type": "bool","value": "True"},{ "name": "TextQualified", "type": "bool","value": "True"},{"name": "UsesLineFeed","type": "bool","value": "False"}]}';

var headerNames = ["Authorization"]; 
var s1="Bearer ";
var headerValues = "Bearer " + accessToken;

var req = new Script.Util.HttpRequest(restapi_url);
req.contentType = "application/json"
req.setHeader("Authorization", headerValues);
req.method = "POST"; 
req.postData = restapi_payload;
var restapi_result = req.send();

I am getting Bad Request (400) error.

Create automation soap api

</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <CreateRequest xmlns="http://exacttarget.com/wsdl/partnerAPI">
            <Objects xsi:type="Automation">
                <Name>System Data Views5</Name>
                <CustomerKey>DataViews_Automation5</CustomerKey>
                <AutomationTasks>
                    <AutomationTask>
                        <Name>Test DE extract8</Name>
                        <Activities>
                            <Activity>
                                <ObjectID>bb94a04d-9632-4623-be47-daabc3f588a6</ObjectID>
                                <ActivityObject xsi:type="DataExtractActivity">
                                    <ObjectID>bb94a04d-9632-4623-be47-daabc3f588a6</ObjectID>
                                    <CustomerKey>Test DE extract8</CustomerKey>
                                    <Name>Test DE extract5</Name>
                                </ActivityObject>
                            </Activity>
                        </Activities>
                    </AutomationTask>
                </AutomationTasks>
                <AutomationType>scheduled</AutomationType>
            </Objects>
        </CreateRequest>
    </s:Body>
</s:Envelope>

It creates the automation but gives the following error:

enter image description here

4
  • 2
    I'd suggest getting it working in Postman first, then implementing it with SSJS. Postman will also generate the JS code for you -- as a place to start. Sep 5, 2020 at 14:51
  • Hi Adam, thank you for the suggestion. I tried with Postman, the status returned was 400. The error message said {"errors":[{"message":"Name already exists"},{"message":"CustomerKey already exists"}]}. I am trying to change the DE customer key of an existing data extract activity in the system. Is there anything that does this? REST/SOAP/SSJS?
    – Priyanka
    Sep 5, 2020 at 16:08
  • 1
    Have you tried a patch instead of a post?
    – EazyE
    Sep 5, 2020 at 17:09
  • Thanks a lot! EazyE, that worked.
    – Priyanka
    Sep 7, 2020 at 11:13

1 Answer 1

3

Exactly as @EazyE commented, you are doing a POST which is a 'create' and to update you need to do a PATCH which is update. Although the Endpoint is mostly the same, the Method has to be different.

There is also a slight difference in that you need to include the dataextractid inside the URL at the end for the PATCH as well as in the JSON in the body.

Making the update call like so:

PATCH /automation/v1/dataextracts/{{dataextractid}} 
Host: {{subdomain}}.rest.marketingcloudapis.com
Authorization: Bearer {{authToken}}
Content-Type: application/json

{
    "dataExtractDefinitionId": "xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "name": "myExtract",
    "key": "myExtract",
    "description": "",
    "dataExtractTypeId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
    "fileSpec": "myFile.zip",
    "intervalType": 0,
    "startDate": "01/01/2014",
    "endDate": "01/30/2014",
    "dataFields": [
        {
            "name": "AccountIDs",
            "type": "string",
            "value": "*"
        },
        {
            "name": "Attributes",
            "type": "string",
            "value": ""
        },
        .... etc.
    ]
}
3
  • Thanks a lot Gortonington, that worked!
    – Priyanka
    Sep 7, 2020 at 11:13
  • Also, when I call the create Automation SOAP , using this data extract activity. The Automation is created successfully but when I open the activity step, it gives me the following error(attached in the initial question)
    – Priyanka
    Sep 7, 2020 at 11:32
  • @Gortonington how can we do the same thing for file transfer activity?
    – Rohit
    Oct 23, 2020 at 7:10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .