# Creating a campaign using the API

Available in...

* Cloud API Services Platform
* Cloud Big Data
* Cloud Big Data Platform
* Cloud Data Fabric
* Cloud Data Integration
* Cloud Data Management Platform
* Cloud Pipeline Designer Standard Edition
* Data Fabric
* Qlik Talend Cloud Enterprise Edition

You can create a campaign by providing the name of the data model and the campaign configuration. You can include the campaign name. It must then match the pattern ^[a-z][a-z\d\-]\*$.

The response contains the field id, which is useful for editing the campaign afterward.

In this example, Talend API Tester is used to send requests.

For further information about Talend API Tester, see [Talend Cloud API Tester User Guide](https://help.qlik.com/talend/r/en-US/Cloud/api-tester-user-guide).

## Before you begin

You [Reading a data model using the API](https://help.qlik.com/talend/en-US/data-stewardship-user-guide/Cloud/api-tds-read-datamodel), using the GET https://tds.{region}.cloud.talend.com/schemaservice/api/v1/schemas/org.talend.schema/{dataModelName} operation.

## Procedure

1. If you do not have a personal access token yet, generate one. For further information, see [Generating a Personal Access Token](https://help.qlik.com/talend/r/en-US/Cloud/management-console-user-guide/cloud-access-token).
2. Open Talend API Tester in your browser.
3. From the Repository tab, select Post in the Method drop-down list.
4. Enter the following URL: https://tds.{region}.cloud.talend.com/data-stewardship/api/v1/campaigns/owned

   You'll find a list of the URLs to use for each data center in [Accessing Talend Cloud applications](https://help.qlik.com/talend/en-US/installation-guide-windows/Cloud/talend-cloud-application-url).
5. Click the Add header button and enter Authorization in the name field and Bearer followed by a whitespace and your token in the value field.
6. Click the Add header button and enter Cookie in the name field, then leave the value field empty.
7. In the Body field, include the campaign details in JSON.
   ### Example

   To create the same Demo - Improve product catalog data quality campaign as the one from the guided tour, using a different name such as my-campaign-resolution-created-via-api and the my\_products\_created\_via\_API, enter:
   ```
   {
       "campaign": {
           "name": "my-campaign-resolution-created-via-api",
           "label": "Improve product catalog data quality (created via API)",
           "description": "Increase the level of data quality for each product catalog.",
           "owners": ["owner@account.com"],
           "taskType": "RESOLUTION",
           "schemaRef": {
               "namespace": "org.talend.schema",
               "name": "my_products_created_via_API",
               "version": 1,
               "displayName": "Product (created via API)"
           },
           "taskResolutionDelay": {
               "value": 10,
               "unit": "DAYS"
           },
           "workflow": {
               "name": "default workflow",
               "states": [{
                   "name": "New",
                   "label": "New",
                   "transitions": [{
                       "name": "To validate",
                       "label": "To validate",
                       "targetStateName": "To validate",
                       "allowedRoles": ["Supervisor"]
                   }],
                   "allowedRoles": [],
                   "translations": {}
               }, {
                   "name": "To validate",
                   "label": "To validate",
                   "transitions": [{
                       "name": "Accept",
                       "label": "Accept",
                       "targetStateName": "Resolved",
                       "allowedRoles": ["Validator"]
                   }, {
                       "name": "Reject",
                       "label": "Reject",
                       "targetStateName": "New",
                       "allowedRoles": ["Validator"]
                   }],
                   "allowedRoles": [],
                   "translations": {}
               }, {
                   "name": "Resolved",
                   "label": "Resolved",
                   "transitions": [],
                   "allowedRoles": ["Validator"],
                   "translations": {}
               }]
           }
       },
       "participants": {
           "Supervisor": ["steward1@account.com"],
           "Validator": ["steward1@account.com"]
       }
   }
   ```

   The "owners" value must include the usernames of the campaign owners.

   The "schemaRef": object must include the "namespace", "name", "version" and "displayName" values for the desired data model. To retrieve this information, see [Reading a data model using the API](https://help.qlik.com/talend/en-US/data-stewardship-user-guide/Cloud/api-tds-read-datamodel).

   The "Supervisor" and "Validator" value must include the usernames of the desired data stewards for these roles.
8. Click Send.

## Results

The API returns a 200 HTTP code to inform you that the request was successful. The response includes an updated JSON description of the data model attributes.

```
{
    "id": "5f4694d651bfb7000154b5b2",
    "createdBy": "owner",
    "lastUpdatedBy": "owner@account.com",
    "creationDate": 1601831320,
    "lastUpdateDate": 1601831320,
    "name": "my-campaign-resolution-created-via-api",
    "label": "Improve product catalog data quality (created via API)",
    "description": "Increase the level of data quality for each product catalog.",
    "owners": [
        "owner@account.com"
    ],
    "ownersDetail": [
        {
            "firstName": "FIRSTNAME",
            "lastName": "LASTNAME",
            "username": "owner@account.com",
            "enabled": true,
            "preferredLanguage": "en",
            "email": "owner@account.com",
            "id": "6be3b335-05c9-4a3b-92d6-c5821f398bac"
        }
    ],
    "status": "STARTED",
    "startDate": 1598461142854,
    "endDate": null,
    "taskType": "RESOLUTION",
    "schemaRef": {
        "namespace": "org.talend.schema",
        "name": "demo_product",
        "version": 1,
        "displayName": "Demo - Product"
    },
    "impactAnalysisStatus": null,
    "fieldsAccess": null,
    "taskResolutionDelay": {
        "value": 10,
        "unit": "DAYS"
    },
    "workflow": {
        "id": null,
        "createdBy": "6be3b335-05c9-4a3b-92d6-c5821f398bac",
        "lastUpdatedBy": "6be3b335-05c9-4a3b-92d6-c5821f398bac",
        "creationDate": 1598461142855,
        "lastUpdateDate": 1598461142855,
        "tenantId": null,
        "name": "default workflow",
        "states": [
            {
                "name": "New",
                "label": "New",
                "transitionQuestion": null,
                "transitions": [
                    {
                        "name": "To validate",
                        "label": "To validate",
                        "targetStateName": "To validate",
                        "allowedRoles": [
                            "Supervisor"
                        ]
                    }
                ],
                "allowedRoles": [],
                "translations": {}
            },
            {
                "name": "To validate",
                "label": "To validate",
                "transitionQuestion": null,
                "transitions": [
                    {
                        "name": "Accept",
                        "label": "Accept",
                        "targetStateName": "Resolved",
                        "allowedRoles": [
                            "Validator"
                        ]
                    },
                    {
                        "name": "Reject",
                        "label": "Reject",
                        "targetStateName": "New",
                        "allowedRoles": [
                            "Validator"
                        ]
                    }
                ],
                "allowedRoles": [],
                "translations": {}
            },
            {
                "name": "Resolved",
                "label": "Resolved",
                "transitionQuestion": null,
                "transitions": [],
                "allowedRoles": [
                    "Validator"
                ],
                "translations": {}
            }
        ]
    }
}
```

If you want to edit the campaign, note the first id value from the response.