# Projects

Note: this API is in beta currently and is subject to change in the future.

## Datasource

### Sync Datasource

This endpoint is used to pass a payload of key/values to the datasource. The fields passed within payload are based on your Datasource configuration.

```
POST /api/v2/projects/datasources/12345/sync/
```

#### Data payload example

```javascript
{
    "payload": {
        "Site Title": "New Site",
        "URL": "www.example.com"
    }
}
```

### Response

If the sync is successful, you will receive a 202 status response that will contain information about the objects that were created or modified.

```javascript
{
    "objects": [
        {
            "obj_type": "Business",
            "method": "update",
            "data": {
                ...The full Business detail will be returned here
            },
            "resource_uri": "/api/v2/businesses/12345"
        },
        {
            "obj_type": "Site",
            "method": "create".,
            "data": {
                ...The full Site detail will be returned here
            },
            "resource_uri": "/api/v2/sites/123456"
        }
    ]
}
```

If there are errors with the sync, you will receive a 400 status response.

If the error is general (configuration errors, or bad payload data) you will receive a `ErrorLog` type.

```javascript
{
    "__all__": [
        {
            "type": "ErrorLog",
            "error": "KeyError: u'Site Title'"
        }
    ]
}
```

If the error is related to validation issues with a particular object API, you will receive a `APIErrorLog` type with more structured information.

```javascript
{
    "__all__": [
        {
            "type": "APIErrorLog",
            "error": {
                "formatted_domain": ["Invalid domain: notvalid"]
            }
        }
    ]
}
```

##
