typedefs.jsdoc

/**
 * Address book data
 * @memberOf module:epochta-client
 * @typedef {Object} AddressBook
 * @property {number} id - Address book identifier
 * @property {string} name - Address book name
 * @property {number} phones - Number of phone numbers in address book
 * @property {number} exceptions - Number of phone numbers in address book exceptions
 * @property {string} creationdate - Address book creation date
 * @property {string} description - Address book description
 */

/**
 * Search params object
 * @memberOf module:epochta-client
 * @typedef {Object} AddressBookSearchFields
 * @property {module:epochta-client.SearchField} [name]
 * @property {module:epochta-client.SearchField} [phones]
 * @property {module:epochta-client.SearchField} [date]
 */

/**
 * Search params object
 * @memberOf module:epochta-client
 * @typedef {Object} PhoneNumberSearchFields
 * @property {module:epochta-client.SearchField} [normalPhone]
 * @property {module:epochta-client.SearchField} [phones]
 * @property {module:epochta-client.SearchField} [idAddressBook]
 * @property {module:epochta-client.SearchField} [variables]
 * @property {module:epochta-client.SearchField} [status]
 */

/**
 * Search field object
 * @memberOf module:epochta-client
 * @typedef {Object} SearchField
 * @property {string} operation - comparison operator, one of ('like', '=', '>', '>=', '<', '<=')
 * @property {string} value - value to compare to
 */

/**
 * Response data for address book clone request
 * @memberOf module:epochta-client
 * @typedef {Object} AddressBookClonedResponse
 * @property {number} idAddressBook - id of the created address book
 * @property {boolean} successful - result
 */

/**
 * Phone number data
 * @memberOf module:epochta-client
 * @typedef {Object} PhoneNumber
 * @property {number} id - unique id
 * @property {number} addressbook - id of address book
 * @property {number} phone - phone number
 * @property {number} normalphone - phone number according to international standard
 * @property {string} variables - personalization variables separated with semicolon
 * @property {string} status - phone number status
 */

/**
 * Phone number exception
 * @memberOf module:epochta-client
 * @typedef {Object} PhoneException
 * @property {number} id - unique id
 * @property {number} phone - phone number
 * @property {string} added - creation date
 * @property {string} comment - description
 */

/**
 * Currency
 * @memberOf module:epochta-client
 * @typedef {'USD'|'GBP'|'UAH'|'RUB'|'EUR'} Currency
 */

/**
 * Balance
 * @memberOf module:epochta-client
 * @typedef {Object} Balance
 * @property {module:epochta-client.Currency} currency - current currency
 * @property {number} balance_currency - balance in current currency
 */

/**
 * Sender name registration response
 * @memberOf module:epochta-client
 * @typedef {Object} SenderShortName
 * @property {number} name_id - sender name id
 * @property {0|1|2} status - 0-moderation; 1-approved; 2-rejected
 */

/**
 * Sender name
 * @memberOf module:epochta-client
 * @typedef {Object} SenderName
 * @property {number} id - sender id
 * @property {string} name - sender name
 * @property {string} country - registration country
 * @property {0|1|2} status - 0-moderation; 1-approved; 2-rejected
 */

/**
 * Campaign information
 * @memberOf module:epochta-client
 * @typedef {Object} CampaignInfo
 * @property {number} sent - number of sent SMS that been sent
 * @property {number} delivered - number of delivered SMS
 * @property {number} not_delivered - number of not delivered SMS
 * @property {number} price - campaign price
 * @property {number} status
 * @description Statuses:
 * 0. Pending
 * 1. Not enough money
 * 2. In progress
 * 3. Done
 * 4. Incorect phone numbers
 * 5. Done partially
 * 6. SPAM
 * 7. Wrong sender name
 * 8. Paused
 * 9. Planned
 * 10. Moderation
 */

/**
 * Campaign delivery statuses
 * @memberOf module:epochta-client
 * @typedef {Object} CampaignDeliveryStats
 * @property {Array<number>} phone - phone numbers
 * @property {Array<string>} sentdate - when was sent
 * @property {Array<string>} donedate - when was done
 * @property {Array<string>} status
 * @description Statuses:
 * |  Status               |   Description       |
 * |-----------------------|---------------------|
 * | 0                     |Pending              |
 * | SENT                  |Sent                 |
 * | DELIVERED             |Delivered            |
 * | NOT_DELIVERED         |Not delivered        |
 * | INVALID_PHONE_NUMBER  |Invalid phone number |
 * | SPAM                  |Spam                 |
 */

/**
 * List of campaigns
 * @memberOf module:epochta-client
 * @typedef {Object} CampaignList
 * @property {Array<number>} id - campaign id
 * @property {Array<string>} from - sender
 * @property {Array<string>} body - message
 * @property {Array<string>} status
 * @description Statuses:
 * 0. Pending
 * 1. Not enough money
 * 2. In progress
 * 3. Done
 * 4. Incorect phone numbers
 * 5. Done partially
 * 6. SPAM
 * 7. Wrong sender name
 * 8. Paused
 * 9. Planned
 * 10. Moderation
 */

/**
 * Task info
 * @memberOf module:epochta-client
 * @typedef {Object} TaskInfo
 * @property {number} id - campaign id
 * @property {number} phone - phone number
 * @property {number} country - country code
 * @property {number} parts - number of campaign parts
 * @property {string} sentdate - when was sent
 * @property {string} donedate - when was done
 * @property {number} price - campaign price
 * @property {string} status - campaign status
 * @property {string} variable - personalization variables
 * @property {string} currency
 */