/**
 * Brevo API
 * Brevo provide a RESTFul API that can be used with any languages. With this API, you will be able to :   - Manage your campaigns and get the statistics   - Manage your contacts   - Send transactional Emails and SMS   - and much more...  You can download our wrappers at https://github.com/orgs/brevo  **Possible responses**   | Code | Message |   | :-------------: | ------------- |   | 200  | OK. Successful Request  |   | 201  | OK. Successful Creation |   | 202  | OK. Request accepted |   | 204  | OK. Successful Update/Deletion  |   | 400  | Error. Bad Request  |   | 401  | Error. Authentication Needed  |   | 402  | Error. Not enough credit, plan upgrade needed  |   | 403  | Error. Permission denied  |   | 404  | Error. Object does not exist |   | 405  | Error. Method not allowed  |   | 406  | Error. Not Acceptable  |   | 422  | Error. Unprocessable Entity | 
 *
 * The version of the OpenAPI document: 3.0.0
 * Contact: contact@brevo.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { RequestFile } from './models';

/**
* Set the filter for the contacts to be exported.
*/
export class RequestContactExportCustomContactFilter {
    /**
    * Mandatory if neither actionForEmailCampaigns nor actionForSmsCampaigns is passed. This will export the contacts on the basis of provided action applied on contacts as per the list id. * allContacts - Fetch the list of all contacts for a particular list. * subscribed & unsubscribed - Fetch the list of subscribed / unsubscribed (blacklisted via any means) contacts for a particular list. * unsubscribedPerList - Fetch the list of contacts that are unsubscribed from a particular list only. 
    */
    'actionForContacts'?: RequestContactExportCustomContactFilter.ActionForContactsEnum;
    /**
    * Mandatory if neither actionForContacts nor actionForSmsCampaigns is passed. This will export the contacts on the basis of provided action applied on email campaigns. * openers & nonOpeners - emailCampaignId is mandatory. Fetch the list of readers / non-readers for a particular email campaign. * clickers & nonClickers - emailCampaignId is mandatory. Fetch the list of clickers / non-clickers for a particular email campaign. * unsubscribed - emailCampaignId is mandatory. Fetch the list of all unsubscribed (blacklisted via any means) contacts for a particular email campaign. * hardBounces & softBounces - emailCampaignId is optional. Fetch the list of hard bounces / soft bounces for a particular / all email campaign(s). 
    */
    'actionForEmailCampaigns'?: RequestContactExportCustomContactFilter.ActionForEmailCampaignsEnum;
    /**
    * Mandatory if neither actionForContacts nor actionForEmailCampaigns is passed. This will export the contacts on the basis of provided action applied on sms campaigns. * unsubscribed - Fetch the list of all unsubscribed (blacklisted via any means) contacts for all / particular sms campaigns. * hardBounces & softBounces - Fetch the list of hard bounces / soft bounces for all / particular sms campaigns. 
    */
    'actionForSmsCampaigns'?: RequestContactExportCustomContactFilter.ActionForSmsCampaignsEnum;
    /**
    * Mandatory if actionForContacts is passed, ignored otherwise. Id of the list for which the corresponding action shall be applied in the filter.
    */
    'listId'?: number;
    /**
    * Considered only if actionForEmailCampaigns is passed, ignored otherwise. Mandatory if action is one of the following - openers, nonOpeners, clickers, nonClickers, unsubscribed. The id of the email campaign for which the corresponding action shall be applied in the filter.
    */
    'emailCampaignId'?: number;
    /**
    * Considered only if actionForSmsCampaigns is passed, ignored otherwise. The id of sms campaign for which the corresponding action shall be applied in the filter.
    */
    'smsCampaignId'?: number;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "actionForContacts",
            "baseName": "actionForContacts",
            "type": "RequestContactExportCustomContactFilter.ActionForContactsEnum"
        },
        {
            "name": "actionForEmailCampaigns",
            "baseName": "actionForEmailCampaigns",
            "type": "RequestContactExportCustomContactFilter.ActionForEmailCampaignsEnum"
        },
        {
            "name": "actionForSmsCampaigns",
            "baseName": "actionForSmsCampaigns",
            "type": "RequestContactExportCustomContactFilter.ActionForSmsCampaignsEnum"
        },
        {
            "name": "listId",
            "baseName": "listId",
            "type": "number"
        },
        {
            "name": "emailCampaignId",
            "baseName": "emailCampaignId",
            "type": "number"
        },
        {
            "name": "smsCampaignId",
            "baseName": "smsCampaignId",
            "type": "number"
        }    ];

    static getAttributeTypeMap() {
        return RequestContactExportCustomContactFilter.attributeTypeMap;
    }
}

export namespace RequestContactExportCustomContactFilter {
    export enum ActionForContactsEnum {
        AllContacts = <any> 'allContacts',
        Subscribed = <any> 'subscribed',
        Unsubscribed = <any> 'unsubscribed',
        UnsubscribedPerList = <any> 'unsubscribedPerList'
    }
    export enum ActionForEmailCampaignsEnum {
        Openers = <any> 'openers',
        NonOpeners = <any> 'nonOpeners',
        Clickers = <any> 'clickers',
        NonClickers = <any> 'nonClickers',
        Unsubscribed = <any> 'unsubscribed',
        HardBounces = <any> 'hardBounces',
        SoftBounces = <any> 'softBounces'
    }
    export enum ActionForSmsCampaignsEnum {
        HardBounces = <any> 'hardBounces',
        SoftBounces = <any> 'softBounces',
        Unsubscribed = <any> 'unsubscribed'
    }
}
