def create_address(connection, id, body, fields=None):
    """Create a new address for a specific user.

    Args:
        connection(object): MicroStrategy connection object returned by
            `connection.Connection()`.
        id(string): User ID.
        fields(list, optional): Comma separated top-level field whitelist. This
            allows client to selectively retrieve part of the response model.
        body: JSON-formatted addres:
                {
                "name": "string",
                "deliveryMode": "EMAIL",
                "device": "GENERIC_EMAIL",
                "value": "string",
                "isDefault": true,
                "default": true
                }

    Returns:
        HTTP response object returned by the MicroStrategy REST server.
    """

    return connection.session.post(
        url=f'{connection.base_url}/api/users/{id}/addresses',
        params={'fields': fields},
        json=body,
    )