UNPKG

esijs

Version:
1,392 lines (1,334 loc) 45.8 kB
const { request, inputValidation } = require('./util/util.js') module.exports = { /** * Bulk lookup of character IDs to receive respective corporation, alliance, and faction IDs. * All characters must exist, or none will be returned. * @exports info * @param characterIdArray {Number[]} The array of character IDs to get info from. * @returns {Promise<JSON[]>} Corporation, alliance, and faction IDs for each character ID. */ affiliation(characterIdArray) { inputValidation({ input: characterIdArray, type: 'object', message: `The function 'character.affiliation' requires an array of character IDs!`, }) return request({ subUrl: 'characters/affiliation', requestType: 'post', body: characterIdArray, }) }, /** * Get a list of all the corporations a character has been a member of. * @exports corpHistory * @param characterID {number} The character to get the history of. * @returns {Promise<object>} The character's history. */ corpHistory(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.corpHistory' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/corporationhistory`, }) }, /** * Get portrait urls for a character. * @exports portrait * @param characterID {number} The character to get the portrait of. * @returns {Promise<object>} Links to the different sizes of the character's portrait. */ portrait(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.portrait' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/portrait`, }) }, /** * Get public information about a character. * @exports info * @param characterID {number} The character to get the public info of. * @returns {Promise<object>} Public info on a character. */ info(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.info' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}`, }) }, /** * Gets agents research. * @requires esi-characters.read_agents_research.v1 * @param {number} characterID * @returns {Promise<object>} A list of agents research information for a character. The formula for finding the current research points with an agent is: currentPoints = remainderPoints + pointsPerDay * days(currentTime - researchStartDate) */ agentsResearch(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.agentsResearch' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/agents_research`, needsAuth: true, }) }, /** * Get blueprints. * @param {number} characterID * @requires esi-characters.read_blueprints.v1 * @returns {Promise<object>} A list of blueprints the character owns. */ blueprints(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.agentsResearch' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/blueprints`, needsAuth: true, }) }, /** * Calculate a CSPA (CONCORD Spam Prevention Act) cost. * @param {number} characterID * @param {[numbers]} characters The target characters to calculate the charge for. * @requires esi-characters.read_contacts.v1 * @returns {Promise<object>} A CSPA charge cost. */ cspa(characterID, characters = []) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.cspa' requires a character ID!`, }) inputValidation({ input: characters, type: 'object', message: `The function 'character.cspa' requires a array of character IDs!`, }) return request({ subUrl: `characters/${characterID}/cspa`, requestType: 'post', body: { characters, }, needsAuth: true, }) }, /** * Get jump fatigue. * @param {number} characterID * @requires esi-characters.read_fatigue.v1 * @returns {Promise<object>} A character’s jump activation and fatigue information. */ fatigue(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.fatigue' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/fatigue`, needsAuth: true, }) }, /** * Get medals. * @param {number} characterID * @requires esi-characters.read_medals.v1 * @returns {Promise<object>} A list of medals the character has. */ medals(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.medals' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/medals`, needsAuth: true, }) }, /** * Get character corporation roles. * @param {number} characterID * @requires esi-characters.read_corporation_roles.v1 * @returns {Promise<object>} A character’s corporation roles. */ roles(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.roles' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/roles`, needsAuth: true, }) }, /** * Get standings. * @param {number} characterID * @requires esi-characters.read_standings.v1 * @returns {Promise<object>} Character standings from agents, NPC corporations, and factions. */ standings(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.standings' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/standings`, needsAuth: true, }) }, /** * Yearly aggregate stats. * @param {number} characterID * @requires esi-characterstats.read.v1 * @returns {Promise<object>} Aggregate yearly stats for a character. */ stats(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.stats' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/stats`, needsAuth: true, }) }, /** * Get character corporation titles. * @param {number} characterID * @requires esi-characters.read_titles.v1 * @returns {Promise<object>} A character’s titles. */ titles(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.titles' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/titles`, needsAuth: true, }) }, /** * */ assets: { /** * Get character assets. * @param {number} characterID * @requires esi-assets.read_assets.v1 * @returns {Promise<object>} A list of the characters assets. */ assets(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.assets.assets' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/assets`, needsAuth: true, }) }, /** * Get character asset locations. * @param {number} characterID * @param {number[]} itemIDs * @requires esi-assets.read_assets.v1 * @returns {Promise<object>} Locations for a set of item ids, which you can get from character assets endpoint. Coordinates for items in hangars or stations are set to (0,0,0) */ locations(characterID, itemIDs = []) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.assets.assetLocations' requires a character ID!`, }) inputValidation({ input: itemIDs, type: 'object', message: `The function 'character.assets.assetLocations' requires a array of item IDs!`, }) return request({ subUrl: `characters/${characterID}/assets/locations`, requestType: 'post', body: { item_ids: itemIDs, }, needsAuth: true, }) }, /** * Get character asset names. * @param {number} characterID * @param {number[]} itemIDs * @requires esi-assets.read_assets.v1 * @returns {Promise<object>} Names for a set of item ids, which you can get from character assets endpoint. Typically used for items that can customize names, like containers or ships. */ names(characterID, itemIDs) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.assets.assetNames' requires a character ID!`, }) inputValidation({ input: itemIDs, type: 'object', message: `The function 'character.assets.assetNames' requires a array of item IDs!`, }) return request({ subUrl: `characters/${characterID}/assets/names`, requestType: 'post', query: { item_ids: itemIDs, }, needsAuth: true, }) }, }, /** * */ bookmarks: { /** * List bookmarks * @param {number} characterID * @requires esi-bookmarks.read_character_bookmarks.v1 * @returns {Promise<object>} A list of your character’s personal bookmarks. */ bookmarks(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.bookmarks.bookmarks' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/bookmarks`, needsAuth: true, }) }, /** * List bookmark folders * @param {number} characterID * @requires esi-bookmarks.read_character_bookmarks.v1 * @returns {Promise<object>} A list of your character’s personal bookmark folders. */ folders(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.bookmarks.bookmarkFolders' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/bookmarks/folders`, needsAuth: true, }) }, }, /** * */ calendar: { /** * List calendar event summaries. * @param {number} characterID * @param {number} fromEvent OPTIONAL - The event ID to start retrieving events from. * @requires esi-calendar.read_calendar_events.v1 * @returns {Promise<object>} Get 50 event summaries from the calendar. If no from_event ID is given, the resource will return the next 50 chronological event summaries from now. If a from_event ID is specified, it will return the next 50 chronological event summaries from after that event */ calendar(characterID, fromEvent) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.calendar.calendar' requires a character ID!`, }) inputValidation({ input: fromEvent, type: 'number', message: `The parameter 'fromEvent' in the function 'character.calendar.calendar' must be a valid event ID!`, optional: true, }) return request({ subUrl: `characters/${characterID}/calendar`, query: { from_event: fromEvent, }, needsAuth: true, }) }, /** * Get a event. * @param {number} characterID * @param {number} eventID * @requires esi-calendar.read_calendar_events.v1 * @returns {Promise<object>} Get all the information for a specific event */ getEvent(characterID, eventID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.calendar.getCalendarEvent' requires a character ID!`, }) inputValidation({ input: eventID, type: 'number', message: `The function 'character.calendar.getCalendarEvent' requires a event ID!`, }) return request({ subUrl: `characters/${characterID}/calendar/${eventID}`, needsAuth: true, }) }, /** * Respond to a event. * @param {number} characterID * @param {number} eventID * @requires esi-calendar.respond_calendar_events.v1 * @returns {Promise<string>} Set your response status to a event. */ respond(characterID, eventID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.calendar.respondCalendarEvent' requires a character ID!`, }) inputValidation({ input: eventID, type: 'number', message: `The function 'character.calendar.respondCalendarEvent' requires a event ID!`, }) return request({ subUrl: `characters/${characterID}/calendar/${eventID}`, requestType: 'post', needsAuth: true, }) }, /** * Get event attendees. * @param {number} characterID * @param {number} eventID * @requires esi-calendar.respond_calendar_events.v1 * @returns {Promise<object>} Get all invited attendees for a given event */ getAttendees(characterID, eventID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.calendar.getCalendarEventAttendees' requires a character ID!`, }) inputValidation({ input: eventID, type: 'number', message: `The function 'character.calendar.getCalendarEventAttendees' requires a event ID!`, }) return request({ subUrl: `characters/${characterID}/calendar/${eventID}/attendees`, needsAuth: true, }) }, }, /** * */ /** * */ clones: { /** * Get clones. * @param {number} characterID * @requires esi-clones.read_clones.v1 * @returns {Promise<object>} A list of the character’s clones. */ clones(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.clones.clones' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/clones`, needsAuth: true, }) }, /** * Get active implants. * @param {number} characterID * @requires esi-clones.read_implants.v1 * @returns {Promise<object>} Implants on the active clone of a character. */ implants(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.clones.implants' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/implants`, needsAuth: true, }) }, }, /** * */ /** * */ contacts: { /** * Get contacts * @param {number} characterID * @requires esi-characters.read_contacts.v1 * @returns {Promise<object>} */ contacts(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.contacts.contacts' requires a character ID!`, }) request({ subUrl: `characters/${characterID}/contacts`, needsAuth: true, }) }, /** * Bulk add contacts with same settings * @param {number} characterID * @param {number[]} contacts * @requires esi-characters.write_contacts.v1 * @returns {Promise<object>} */ addContacts(characterID, contacts) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.contacts.addContacts' requires a character ID!`, }) inputValidation({ input: contacts, type: 'object', message: `The function 'character.contacts.addContacts' requires a array of one or more contact IDs!`, }) request({ subUrl: `characters/${characterID}/contacts`, needsAuth: true, requestType: 'post', }) }, /** * Bulk delete contacts * @param {number} characterID * @param {number[]} contacts * @requires esi-characters.write_contacts.v1 * @returns {Promise<object>} */ deleteContacts(characterID, contacts) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.contacts.deleteContacts' requires a character ID!`, }) inputValidation({ input: contacts, type: 'object', message: `The function 'character.contacts.deleteContacts' requires a array of one or more contact IDs!`, }) request({ subUrl: `characters/${characterID}/contacts`, needsAuth: true, requestType: 'delete', }) }, /** * Bulk edit contacts with same settings * @param {number} characterID * @param {number[]} contacts * @requires esi-characters.write_contacts.v1 * @returns {Promise<object>} */ editContacts(characterID, contacts) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.contacts.editContacts' requires a character ID!`, }) inputValidation({ input: contacts, type: 'object', message: `The function 'character.contacts.editContacts' requires a array of one or more contact IDs!`, }) request({ subUrl: `characters/${characterID}/contacts`, needsAuth: true, requestType: 'put', }) }, }, /** * */ /** * */ /** * */ contracts: { /** * Get contracts * @param {number} characterID * @requires esi-contracts.read_character_contracts.v1 * @returns contracts available to a character, only if the character is issuer, acceptor or assignee. Only returns contracts no older than 30 days, or if the status is "in_progress". */ contracts(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.contracts.contracts' requires a character ID!`, }) request({ subUrl: `/characters/${characterID}/contracts/`, needsAuth: true, }) }, /** * Get contract bids * @param {number} characterID * @param {number} contractID * @requires esi-contracts.read_character_contracts.v1 * @returns bids on a particular auction contract. */ bids(characterID, contractID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.contracts.bids' requires a character ID!`, }) inputValidation({ input: contractID, type: 'number', message: `The function 'character.contracts.bids' requires a contract ID!`, }) request({ subUrl: `/characters/${characterID}/contracts/${contractID}/bids`, needsAuth: true, }) }, /** * Get contract items * @param {number} characterID * @param {number} contractID * @requires esi-contracts.read_character_contracts.v1 * @returns items of a particular contract. */ items(characterID, contractID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.contracts.items' requires a character ID!`, }) inputValidation({ input: contractID, type: 'number', message: `The function 'character.contracts.items' requires a contract ID!`, }) request({ subUrl: `/characters/${characterID}/contracts/${contractID}/items`, needsAuth: true, }) }, }, /** * */ /** * */ /** * */ industry: { /** * List character industry jobs. * @param {number} characterID * @requires esi-industry.read_character_jobs.v1 * @returns {Promise<object>} */ jobs(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.industry.jobs' requires a character ID!`, }) request({ subUrl: `characters/${characterID}/industry/jobs`, needsAuth: true, }) }, /** * Character mining ledger. * @param {number} characterID * @requires esi-industry.read_character_mining.v1 * @returns Paginated record of all mining done by a character for the past 30 days */ ledger(characterID, page = 1) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.industry.ledger' requires a character ID!`, }) inputValidation({ input: page, type: 'number', message: `The function 'character.industry.ledger' requires a character ID!`, }) request({ subUrl: `characters/${characterID}/mining`, needsAuth: true, }) }, }, /** * */ /** * */ /** * */ notifications: { /** * Get character notifications. * @param {number} characterID The character to get the notifications of. * @requires esi-characters.read_notifications.v1 * @returns {Promise<object>} Character notifications. */ notifications(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.corpHistory' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/notifications`, needsAuth: true, }) }, /** * Get new contact notifications. * @param {number} characterID * @requires esi-characters.read_notifications.v1 * @returns {Promise<object>} Notifications about having been added to someone’s contact list. */ contacts(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.notificationContacts' requires a character ID!`, }) return request({ subUrl: `characters/${characterID}/notification/contacts`, needsAuth: true, }) }, }, /** * */ /** * */ /** * */ killmails: { /** * Get a character's recent kills and losses. * @param {number} characterID * @param {number} page The page of results to return. * @requires esi-killmails.read_killmails.v1 * @returns a list of a character’s kills and losses going back 90 days. */ recent(characterID, page = 1) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.killmails.recent' requires a corporation ID!`, }) inputValidation({ input: page, type: 'number', message: `The function 'character.killmails.recent' requires a page number!`, optional: true, }) return request({ subUrl: `characters/${characterID}/killmails/recent`, query: { page: page, }, needsAuth: true, }) }, }, /** * */ /** * */ /** * */ mail: { /** * Return mail headers. * @param {number} characterID * @param {Array} labels Get mails only with one or more of these labels. * @param {number} lastMailID Get mails after this mail. * @requires esi-mail.read_mail.v1 * @returns the 50 most recent mail headers belonging to the character that match the query criteria. * Queries can be filtered by label, and lastMailID can be used to paginate backwards. */ getAll(characterID, labels = [], lastMailID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.getAll' needs a character ID!`, }) inputValidation({ input: labels, type: 'object', message: `The parameter "labels" in the function 'character.mail.getAll' must be a array!`, }) inputValidation({ input: lastMailID, type: 'number', message: `The parameter "lastMailID" in the function 'character.mail.getAll' must be a mail ID!`, optional: true, }) let query = { labels: labels, } if (lastMailID) { query.last_mail_id = lastMailID } return request({ subUrl: `characters/${characterID}/mail/`, query: query, needsAuth: true, }) }, /** * Return a mail. * @param {number} characterID * @param {number} mailID * @requires esi-mail.read_mail.v1 * @returns the contents of an EVE mail. */ get(characterID, mailID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.get' needs a character ID!`, }) inputValidation({ input: mailID, type: 'number', message: `The function 'character.mail.get' needs a mail ID!`, optional: true, }) return request({ subUrl: `characters/${characterID}/mail/${mailID}`, needsAuth: true, }) }, /** * Send a new mail. * @param {number} characterID * @param {object} mail The mail to send. Mail structure is below. * @example { "approved_cost": 0, "body": "This is a Mail!", "recipients": [ { "recipient_id": 0, "recipient_type": "alliance" } ], "subject": "Your hentai addiction" } */ send(characterID, mail) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.send' needs a character ID!`, }) inputValidation({ input: mail, type: 'object', message: `The function 'character.mail.send' needs a mail!`, }) return request({ subUrl: `characters/${characterID}/mail/`, requestType: 'POST', body: mail, needsAuth: true, }) }, /** * Update metadata about a mail. * @param {number} characterID * @param {number} mailID * @param {object} contents Structure below. * @example { "labels": [ 0 ], "read": true } */ update(characterID, mailID, contents) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.delete' needs a character ID!`, }) inputValidation({ input: mailID, type: 'number', message: `The function 'character.mail.delete' needs a mail ID!`, }) inputValidation({ input: contents, type: 'object', message: `The function 'character.mail.delete' needs the contents!`, }) return request({ subUrl: `characters/${characterID}/mail/${mailID}`, requestType: 'PUT', body: contents, needsAuth: true, }) }, /** * Delete a mail. * @param {number} characterID * @param {number} mailID * @requires esi-mail.organize_mail.v1 */ delete(characterID, mailID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.delete' needs a character ID!`, }) inputValidation({ input: mailID, type: 'number', message: `The function 'character.mail.delete' needs a mail ID!`, }) return request({ subUrl: `characters/${characterID}/mail/${mailID}`, requestType: 'DELETE', needsAuth: true, }) }, /** * Get mail labels and unread counts. * @param {number} characterID * @requires esi-mail.read_mail.v1 * @returns a list of the users mail labels, unread counts for each label and a total unread count. */ labels(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.labels' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/mail/labels/`, requestType: 'GET', needsAuth: true, }) }, /** * Create a mail label. * @param {number} characterID * @param {object} label Label example below. * @example * { "color": "#ffffff", "name": "capt morgans spiced cum" } */ createLabel(characterID, label) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.createLabel' needs a character ID!`, }) inputValidation({ input: label, type: 'object', message: `The function 'character.mail.createLabel' needs a label object!`, }) return request({ subUrl: `characters/${characterID}/mail/labels/`, requestType: 'POST', body: label, needsAuth: true, }) }, /** * Delete a mail label. * @param {number} characterID * @param {number} labelID * @requires esi-mail.organize_mail.v1 */ deleteLabel(characterID, labelID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.deleteLabel' needs a character ID!`, }) inputValidation({ input: labelID, type: 'number', message: `The function 'character.mail.deleteLabel' needs a label ID!`, }) return request({ subUrl: `characters/${characterID}/mail/labels/${labelID}`, requestType: 'DELETE', needsAuth: true, }) }, /** * Get mailing list subscriptions. * @param {number} characterID * @requires esi-mail.read_mail.v1 * @returns all mailing lists that the character is subscribed to. */ mailingLists(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.mail.mailingLists' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/mail/lists`, requestType: 'GET', needsAuth: true, }) }, }, /** * */ /** * */ /** * */ market: { /** * List open orders from a character. * @param {number} characterID * @requires esi-markets.read_character_orders.v1 */ orders(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.market.orders' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/orders`, requestType: 'GET', needsAuth: true, }) }, /** * List historical orders by a character. * @param {number} characterID * @requires esi-markets.read_character_orders.v1 */ orderHistory(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.market.orderHistory' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/orders/history`, requestType: 'GET', needsAuth: true, }) }, }, /** * */ /** * */ opportunities: { /** * Get a character's completed tasks * @param {number} characterID * @requires esi-characters.read_opportunities.v1 * @returns a list of tasks finished by a character. */ completedTasks(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.opportunities.completedTasks' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/opportunities`, needsAuth: true, }) }, }, /** * */ pi: { /** * Get colonies. * @param {number} characterID * @requires esi-planets.manage_planets.v1 * @returns a list of all planetary colonies owned by a character. */ colonies(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.pi.colonies' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/planets`, needsAuth: true, }) }, /** * Get colony layout. * @param {number} characterID * @param {number} planetID * @requires esi-planets.manage_planets.v1 * @returns full details on the layout of a single planetary colony, including links, pins and routes. * Note: Planetary information is only recalculated when the colony is viewed through the client. * Information will not update until this criteria is met. */ colonyInfo(characterID, planetID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.pi.colonyInfo' needs a character ID!`, }) inputValidation({ input: planetID, type: 'number', message: `The function 'character.pi.colonyInfo' needs a planet ID!`, }) return request({ subUrl: `characters/${characterID}/planets/${planetID}`, needsAuth: true, }) }, }, /** * */ skills: { /** * Get character attributes. * @param {number} characterID * @requires esi-skills.read_skills.v1 * @returns attributes of a character. */ attributes(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.skills.attributes' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/attributes`, needsAuth: true, }) }, /** * Get character's skill queue. * @param {number} characterID * @requires esi-skills.read_skillqueue.v1 * @returns the configured skill queue for the given character */ queue(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.skills.queue' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/skillqueue`, needsAuth: true, }) }, /** * Get character skills. * @param {number} characterID * @requires esi-skills.read_skills.v1 * @returns all trained skills for the given character. */ skills(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.skills.skills' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/skills`, needsAuth: true, }) }, }, /** * */ wallet: { /** * Get a character's wallet balance. * @param {number} characterID * @requires esi-wallet.read_character_wallet.v1 * @returns a character’s wallet balance. */ balance(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.wallet.balance' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/wallet`, needsAuth: true, }) }, /** * Get character wallet journal. * @param {number} characterID * @requires esi-wallet.read_character_wallet.v1 * @returns the given character’s wallet journal going 30 days back. */ journal(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.wallet.journal' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/wallet/journal`, needsAuth: true, }) }, /** * Get wallet transactions. * @param {number} characterID * @requires esi-wallet.read_character_wallet.v1 * @returns wallet transactions of a character. */ transactions(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.wallet.transactions' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/wallet/transactions`, needsAuth: true, }) }, }, /** * */ location: { /** * Information about the character's current location. Returns the current solar system id and * also the current station or structure ID if applicable. * @param {number} characterID * @requires esi-location.read_location.v1 * @returns character's current solar system and structure (if applicable) */ location(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.location.location' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/location`, needsAuth: true, }) }, /** * Checks if the character is currently online. * @param {number} characterID * @requires esi-location.read_online.v1 * @returns character's online status, last session times, and number of logins */ online(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.location.online' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/online`, needsAuth: true, }) }, /** * Get the character's current ship type, name, and ID. * @param {number} characterID * @requires esi-location.read_ship_type.v1 * @returns character's current ship type, name, and ID */ ship(characterID) { inputValidation({ input: characterID, type: 'number', message: `The function 'character.location.ship' needs a character ID!`, }) return request({ subUrl: `characters/${characterID}/ship`, needsAuth: true, }) }, }, }