openapi: 3.1.0 info: title: OpenAPI definition version: v0 servers: - url: http://localhost:8080 description: Generated server url paths: /rule-book: get: tags: - rule-book summary: Find the caller's rule book operationId: findRuleBook responses: "200": description: The caller's rule book content: '*/*': schema: $ref: "#/components/schemas/RuleBookResponse" "404": description: The caller has no rule book put: tags: - rule-book summary: Update the caller's rule book operationId: updateRuleBook requestBody: description: New state of the caller's rule book content: application/json: schema: $ref: "#/components/schemas/UpdateRuleBookRequest" required: true responses: "200": description: The updated rule book content: '*/*': schema: $ref: "#/components/schemas/RuleBookResponse" "400": description: |- Returned when: - a ledger scope reference is not one of the caller's own main ledgers /ledgers/main/{ledgerId}: put: tags: - ledger summary: Update a main ledger operationId: updateMainLedger parameters: - name: ledgerId in: path description: Id of the main ledger required: true schema: type: string format: uuid requestBody: description: New state of the main ledger content: application/json: schema: $ref: "#/components/schemas/UpdateMainLedgerRequest" required: true responses: "200": description: The updated main ledger content: '*/*': schema: $ref: "#/components/schemas/MainLedgerResponse" "400": description: |- Returned when: - the ledger is not a main ledger - the request is invalid "404": description: No ledger with this id /ledgers/combined/{ledgerId}: put: tags: - ledger summary: Update a combined ledger operationId: updateCombinedLedger parameters: - name: ledgerId in: path description: Id of the combined ledger required: true schema: type: string format: uuid requestBody: description: New state of the combined ledger content: application/json: schema: $ref: "#/components/schemas/UpdateCombinedLedgerRequest" required: true responses: "200": description: The updated combined ledger content: '*/*': schema: $ref: "#/components/schemas/CombinedLedgerResponse" "400": description: |- Returned when: - the ledger is not a combined ledger - the request is invalid "404": description: No ledger with this id /reprocessing: post: tags: - reprocessing summary: "Reprocess the given item stacks for a character, appraising the input\ \ and resulting materials" operationId: reprocessItems parameters: - name: locationId in: query description: Location to derive reprocessing efficiency at; defaults to the character's current location when omitted required: false schema: type: integer format: int64 requestBody: description: Character and item stacks to reprocess content: application/json: schema: $ref: "#/components/schemas/ReprocessItemsRequest" required: true responses: "200": description: The reprocessing result for each input stack content: '*/*': schema: type: array items: $ref: "#/components/schemas/ReprocessingResultResponse" /reprocessing/paste: post: tags: - reprocessing summary: "Reprocess a pasted EVE inventory listing for a character, resolving\ \ item names before appraising the input and resulting materials" operationId: reprocessRawItems parameters: - name: characterId in: query description: Character to reprocess for required: true schema: type: integer format: int64 - name: locationId in: query description: Location to derive reprocessing efficiency at; defaults to the character's current location when omitted required: false schema: type: integer format: int64 requestBody: description: Raw tab-separated inventory listing copied from the EVE client content: text/plain: schema: type: string required: true responses: "200": description: The reprocessing result for each resolved input stack content: '*/*': schema: type: array items: $ref: "#/components/schemas/ReprocessingResultResponse" /refresh: post: tags: - auth summary: Rotate the refresh session and mint a fresh access token operationId: refresh responses: "200": description: A fresh access token; the refresh cookie is rotated content: '*/*': schema: $ref: "#/components/schemas/RefreshResponse" "401": description: "Missing, expired, or reused refresh token" content: '*/*': schema: $ref: "#/components/schemas/RefreshResponse" /market/types/paste: post: tags: - market summary: "Parse a pasted EVE inventory listing into market type stacks, resolving\ \ names to type ids" operationId: parseStacks requestBody: description: Raw tab-separated inventory listing copied from the EVE client content: text/plain: schema: type: string required: true responses: "200": description: The resolved stacks; lines whose name does not match any type are omitted and lines resolving to the same type are merged with their quantities summed content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketTypeStackResponse" "400": description: Returned when a line carries a quantity that is not a positive whole number /market/prices/paste: post: tags: - market summary: "Parse a pasted EVE inventory block (item name + quantity, tab/newline\ \ separated) and return the current valuation of each stack at the given market\ \ location (Jita by default)" operationId: pastePrices parameters: - name: locationId in: query description: Station or structure id of the market to price against; defaults to Jita when omitted required: false schema: type: integer format: int64 requestBody: content: text/plain: schema: type: string description: "Raw inventory block copied from the EVE client, e.g. \"\ Tritanium\\t1000\"" required: true responses: "200": description: "One stack appraisal per resolved market type, valued at current\ \ buy and sell prices" content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketTypeStackAppraisalResponse" "400": description: Returned when the request body is not text/plain or locationId is not a market location id /market/history/refresh: post: tags: - market-history-admin-controller operationId: refresh_1 responses: "202": description: Accepted /logout: post: tags: - auth summary: Revoke the refresh session and clear the refresh cookie operationId: logout responses: "204": description: The refresh session is revoked and the cookie cleared /ledgers/main: post: tags: - ledger summary: Create a main ledger operationId: createMainLedger requestBody: description: Main ledger to create content: application/json: schema: $ref: "#/components/schemas/CreateMainLedgerRequest" required: true responses: "201": description: The created main ledger headers: Location: description: URL of the created main ledger style: simple schema: type: string format: uri content: '*/*': schema: $ref: "#/components/schemas/MainLedgerResponse" "400": description: Invalid request (e.g. blank name) /ledgers/combined: post: tags: - ledger summary: Create a combined ledger operationId: createCombinedLedger requestBody: description: Combined ledger to create content: application/json: schema: $ref: "#/components/schemas/CreateCombinedLedgerRequest" required: true responses: "201": description: The created combined ledger headers: Location: description: URL of the created combined ledger style: simple schema: type: string format: uri content: '*/*': schema: $ref: "#/components/schemas/CombinedLedgerResponse" "400": description: "Invalid request (e.g. blank name, a member ledger missing\ \ or already contained)" /characters/add: post: tags: - auth summary: Seed the current user in the session so the next SSO links the new character to them operationId: addCharacter responses: "204": description: The link is seeded; follow with a full-page nav to /oauth2/authorization/esi "401": description: Missing or expired access token /balances/rebuild: post: tags: - balance-rebuild-admin-controller operationId: rebuild parameters: - name: ledgerIds in: query required: true schema: type: array items: type: string format: uuid responses: "204": description: No Content /activity/consume: post: tags: - activity summary: Manually record a consumption (sell) of an item. Call POST /activities/process to fold it into acquisitions. operationId: consume requestBody: content: application/json: schema: $ref: "#/components/schemas/ManualActivityRequest" required: true responses: "200": description: Consumption recorded "400": description: Invalid request (e.g. CORPORATION source) "404": description: Source not owned by the caller /activity/acquire: post: tags: - activity summary: Manually record an acquisition (buy) of an item. Call POST /activities/process to fold it into acquisitions. operationId: acquire requestBody: content: application/json: schema: $ref: "#/components/schemas/ManualActivityRequest" required: true responses: "200": description: Acquisition recorded "400": description: Invalid request (e.g. CORPORATION source) "404": description: Source not owned by the caller /activities/process: post: tags: - activity summary: Process new activities for the authenticated user's characters operationId: processNewActivities parameters: - name: from in: query description: Reprocess by walking the processed tail back to this UTC datetime (ISO-8601); omit to only process new activities required: false schema: type: string format: date-time responses: "202": description: Processing started in the background /rule-scripts/definitions: get: tags: - rule-script summary: List the available rule script type definition files operationId: listScriptDefinitions responses: "200": description: The names of the available .d.ts type definitions content: '*/*': schema: type: array items: type: string /rule-scripts/definitions/{name}: get: tags: - rule-script summary: Download a rule script type definition file by name operationId: getScriptDefinition parameters: - name: name in: path required: true schema: type: string responses: "200": description: The requested .d.ts type definitions content: text/plain: schema: type: string "404": description: No type definition with that name exists content: text/plain: schema: type: string /me: get: tags: - auth summary: Return the authenticated user and the characters they own operationId: me responses: "200": description: The authenticated user and their characters content: '*/*': schema: $ref: "#/components/schemas/MeResponse" "401": description: Missing or expired access token content: '*/*': schema: $ref: "#/components/schemas/MeResponse" /market/{marketTypeId}/scan: get: tags: - market summary: "Scan a single market type, returning its volume-weighted price quartiles\ \ and recent price trend" operationId: scanMarketType parameters: - name: marketTypeId in: path description: The market type id to scan required: true schema: type: integer format: int64 - name: days in: query description: Number of most recent days of history to analyse required: false schema: type: integer format: int32 default: 365 minimum: 1 - name: brokerFee in: query description: "Broker fee as a fraction (e.g. 0.015 for 1.5%), paid on both\ \ buy and sell orders" required: false schema: type: number default: 0.015 maximum: 1 minimum: 0 - name: salesTax in: query description: "Sales tax as a fraction (e.g. 0.03375 for 3.375%), paid on sell\ \ orders" required: false schema: type: number default: 0.03375 maximum: 1 minimum: 0 responses: "200": description: The scan result for the requested market type content: '*/*': schema: $ref: "#/components/schemas/MarketScanResponse" "400": description: The days parameter is not greater than 0 /market/{marketTypeId}/history: get: tags: - market summary: "Find the market history of a type, most recent first" operationId: findHistory parameters: - name: marketTypeId in: path description: Id of the market type required: true schema: type: integer format: int64 - name: days in: query description: Optional number of most recent days to return; omit for the full history required: false schema: type: integer format: int32 minimum: 1 responses: "200": description: The market history of the type content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketHistoryResponse" "400": description: The days parameter is not greater than 0 /market/{marketTypeId}/history/quartiles: get: tags: - market summary: Compute volume-weighted price quartiles and the recent price trend from a type's market history operationId: findQuartiles parameters: - name: marketTypeId in: path description: Id of the market type required: true schema: type: integer format: int64 - name: days in: query description: Optional number of most recent days to analyze; omit for the full history required: false schema: type: integer format: int32 minimum: 1 responses: "200": description: The price quartiles of the type content: '*/*': schema: $ref: "#/components/schemas/HistoryQuartilesResponse" "400": description: The days parameter is not greater than 0 /market/types: get: tags: - market summary: Return the static market type details for each requested type id operationId: findTypes parameters: - name: ids in: query description: "Market type ids to look up, e.g. ids=34,35" required: true schema: type: array items: type: integer format: int64 responses: "200": description: The market types found for the requested ids; unknown ids are omitted content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketTypeResponse" "400": description: |- Returned when: - the ids parameter is missing - an ids value is not a numeric id /market/types/search: get: tags: - market summary: "Search marketable types whose name contains the given text, case-insensitively" operationId: searchTypes parameters: - name: name in: query description: "Text to match against the type name, e.g. name=tritan" required: true schema: type: string - name: limit in: query description: "Maximum number of results to return, defaults to 50" required: false schema: type: integer format: int32 default: 50 responses: "200": description: "The marketable types matching the search, ordered by name\ \ and capped at the requested limit" content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketTypeResponse" "400": description: |- Returned when: - the name parameter is missing - the limit value is not a number /market/scan: get: tags: - market summary: "Scan every tracked market type, returning volume-weighted price quartiles\ \ and the recent price trend for each" operationId: scanMarket parameters: - name: days in: query description: Number of most recent days of history to analyse required: false schema: type: integer format: int32 default: 365 minimum: 1 - name: brokerFee in: query description: "Broker fee as a fraction (e.g. 0.015 for 1.5%), paid on both\ \ buy and sell orders" required: false schema: type: number default: 0.015 maximum: 1 minimum: 0 - name: salesTax in: query description: "Sales tax as a fraction (e.g. 0.03375 for 3.375%), paid on sell\ \ orders" required: false schema: type: number default: 0.03375 maximum: 1 minimum: 0 responses: "200": description: "The scan results, one entry per tracked market type" content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketScanResponse" "400": description: The days parameter is not greater than 0 /market/prices: get: tags: - market summary: "Return the current order book (highest buy, lowest sell, order count)\ \ for each requested market type, priced at the given market location (Jita\ \ by default)" operationId: currentPrices parameters: - name: types in: query description: "Market type ids to price, e.g. types=34,35" required: true schema: type: array items: type: integer format: int64 - name: locationId in: query description: Station or structure id of the market to price against; defaults to Jita when omitted required: false schema: type: integer format: int64 responses: "200": description: "The order book for each requested type, one entry per type" content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketPriceResponse" "400": description: |- Returned when: - the types parameter is missing - a types value is not a numeric id - locationId is not a market location id /market/orders: get: tags: - market summary: List the open market orders across all characters owned by the authenticated user operationId: findAllMarketOrders responses: "200": description: The authenticated user's open market orders content: '*/*': schema: type: array items: $ref: "#/components/schemas/MarketOrderResponse" /market/history/quartiles: get: tags: - market summary: Compute volume-weighted price quartiles and the recent price trend for each requested market type operationId: findAllQuartiles parameters: - name: types in: query description: "Market type ids to analyze, e.g. types=34,35" required: true schema: type: array items: type: integer format: int64 - name: days in: query description: Optional number of most recent days to analyze; omit for the full history required: false schema: type: integer format: int32 minimum: 1 responses: "200": description: "The price quartiles for each requested type, one entry per\ \ type" content: '*/*': schema: type: array items: $ref: "#/components/schemas/HistoryQuartilesResponse" "400": description: |- Returned when: - the types parameter is missing - a types value is not a numeric id - the days parameter is not greater than 0 /locations/{id}: get: tags: - location summary: "Resolve a market location id (NPC station or public structure, or\ \ a private structure reachable by the authenticated caller's characters)\ \ to its name and containing solar system and region" operationId: findLocationById parameters: - name: id in: path description: "Market location id (station id) to resolve, e.g. 60003760" required: true schema: type: integer format: int64 responses: "200": description: The resolved market location content: '*/*': schema: $ref: "#/components/schemas/DockableLocationResponse" "400": description: Returned when the id is not a market location id "404": description: Returned when no market location has the given id /locations/search: get: tags: - location summary: "Search market locations (NPC stations and public structures, plus\ \ private structures reachable by the authenticated caller's characters) whose\ \ name contains the given text, case-insensitively" operationId: searchLocations parameters: - name: name in: query description: "Text to match against the location name, e.g. name=jita" required: true schema: type: string - name: limit in: query description: "Maximum number of results to return, defaults to 50" required: false schema: type: integer format: int32 default: 50 responses: "200": description: "The market locations matching the search, ordered by name\ \ and capped at the requested limit" content: '*/*': schema: type: array items: $ref: "#/components/schemas/DockableLocationResponse" "400": description: |- Returned when: - the name parameter is missing - the limit value is not a number /ledgers: get: tags: - ledger summary: Find all ledgers owned by the authenticated user operationId: findAllLedgers responses: "200": description: The authenticated user's ledgers content: '*/*': schema: type: array items: $ref: "#/components/schemas/LedgerResponse" /ledgers/{ledgerId}: get: tags: - ledger summary: Find a ledger by its id operationId: findLedgerById parameters: - name: ledgerId in: path description: Id of the ledger required: true schema: type: string format: uuid responses: "200": description: The ledger content: '*/*': schema: $ref: "#/components/schemas/LedgerResponse" "400": description: The ledger cannot be exposed (system ledger) "404": description: No ledger with this id /ledgers/{ledgerId}/transactions: get: tags: - transaction summary: Find all transactions in a ledger operationId: finAllTransactionsInLedger parameters: - name: ledgerId in: path description: Id of the ledger required: true schema: type: string format: uuid responses: "200": description: All transactions in the ledger content: '*/*': schema: type: array items: $ref: "#/components/schemas/TransactionResponse" "404": description: No ledger with this id /ledgers/{ledgerId}/profit: get: tags: - transaction summary: Get the daily profit series for a single ledger operationId: profitPerDayInLedger parameters: - name: ledgerId in: path description: Id of the ledger required: true schema: type: string format: uuid responses: "200": description: "Daily profit for the ledger, ascending by date, only for days\ \ with ISK activity" content: '*/*': schema: type: array items: $ref: "#/components/schemas/DailyProfitResponse" "400": description: The ledger is the system ledger or a combined ledger "404": description: No ledger with this id /ledgers/{ledgerId}/margin: get: tags: - transaction summary: Get the daily FIFO-realized profit series for a single ledger operationId: marginPerDayInLedger parameters: - name: ledgerId in: path description: Id of the ledger required: true schema: type: string format: uuid responses: "200": description: "Daily FIFO-realized profit for the ledger, ascending by date,\ \ only for days with a sale. iskIn is the sum of that day's profitable\ \ trades, iskOut is the sum of that day's losing trades (as a positive\ \ deficit); profit is iskIn minus iskOut." content: '*/*': schema: type: array items: $ref: "#/components/schemas/DailyProfitResponse" "400": description: The ledger is the system ledger or a combined ledger "404": description: No ledger with this id /ledgers/{ledgerId}/balance: get: tags: - ledger summary: Find the balance of a ledger operationId: findBalanceByLedgerId parameters: - name: ledgerId in: path description: Id of the ledger required: true schema: type: string format: uuid responses: "200": description: The balance of the ledger content: '*/*': schema: $ref: "#/components/schemas/BalanceResponse" "404": description: No ledger with this id /corporations: get: tags: - corporation summary: "Resolve public information for several corporation ids at once, silently\ \ omitting ids ESI cannot resolve" operationId: findCorporations parameters: - name: ids in: query description: "Corporation ids to resolve, e.g. ids=98000001,98000002" required: true schema: type: array items: type: integer format: int64 responses: "200": description: The corporations that resolved; unknown ids are omitted content: '*/*': schema: type: array items: $ref: "#/components/schemas/CorporationResponse" /corporations/{corporationId}: get: tags: - corporation summary: "Resolve public information (name, ticker, alliance) for a corporation\ \ id" operationId: findCorporation parameters: - name: corporationId in: path description: "Corporation id to resolve, e.g. 98000001" required: true schema: type: integer format: int64 responses: "200": description: The resolved corporation content: '*/*': schema: $ref: "#/components/schemas/CorporationResponse" "404": description: Returned when ESI has no corporation with the given id /characters: get: tags: - character summary: Find the characters owned by the authenticated user operationId: findAllCharacters responses: "200": description: The authenticated user's characters content: '*/*': schema: type: array items: $ref: "#/components/schemas/CharacterResponse" /activities/processed: get: tags: - activity summary: Stream a notification when the user's activity processing completes operationId: streamProcessing responses: "200": description: SSE stream opened content: text/event-stream: schema: $ref: "#/components/schemas/SseEmitter" /acquisitions: get: tags: - acquisition summary: "Find the caller's acquisitions, optionally filtered by ledger, market\ \ type and consumption state" operationId: findAllAcquisitions parameters: - name: ledgerId in: query description: Only return acquisitions held in this ledger required: false schema: type: string format: uuid - name: marketTypeId in: query description: Only return acquisitions of this market type required: false schema: type: integer format: int64 - name: includeConsumed in: query description: Include fully consumed acquisitions (no remaining stock) required: false schema: type: boolean default: false responses: "200": description: The matching acquisitions content: '*/*': schema: type: array items: $ref: "#/components/schemas/AcquisitionResponse" components: schemas: RuleScopeRequest: type: object description: The ledgers and other resources to bind to a rule script. properties: ledgers: type: object additionalProperties: type: string format: uuid description: "Ledger references the script writes to, each bound to one\ \ of the user's own main ledgers." characters: type: object additionalProperties: type: integer format: int64 description: "Character references the script can read, each bound to one\ \ of the user's own characters." corporations: type: object additionalProperties: type: integer format: int64 description: "Corporation references the script can read, each bound to\ \ a corporation of one of the user's own characters." walletDivisions: type: object additionalProperties: $ref: "#/components/schemas/WalletDivisionTargetRequest" description: "Corporation wallet division references the script can read,\ \ each bound to a corporation of one of the user's own characters." required: - characters - corporations - ledgers - walletDivisions RuleScriptRequest: type: object description: "A named rule script to store in the book, together with its scope." properties: name: type: string description: Unique script name within the book; a lowercase alphanumeric identifier. example: sales scope: $ref: "#/components/schemas/RuleScopeRequest" description: The ledgers and other resources bound to this script. script: type: string description: The classification script source. example: transfer.to('wallet') required: - name - scope - script UpdateRuleBookRequest: type: object description: Request to update the caller's rule book; replaces its rule scripts. properties: scripts: type: array description: The rule scripts making up the book. items: $ref: "#/components/schemas/RuleScriptRequest" required: - scripts WalletDivisionTargetRequest: type: object description: A corporation wallet division to bind. properties: corporationId: type: integer format: int64 description: The corporation the wallet division belongs to. example: 98000001 division: type: integer format: int32 description: "The wallet division number, from 1 to 7." example: 1 required: - corporationId - division RuleBookResponse: type: object description: "The caller's rule book: the named rule scripts that classify transactions,\ \ each with its scope." properties: userId: type: string format: uuid description: Owning user identifier. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 scripts: type: array description: The rule scripts making up the book. items: $ref: "#/components/schemas/RuleScriptResponse" required: - scripts - userId RuleScopeResponse: type: object description: The ledgers and other resources bound to a rule script. properties: ledgers: type: object additionalProperties: type: string format: uuid description: "Ledger references the script writes to, each bound to one\ \ of the user's own main ledgers." characters: type: object additionalProperties: type: integer format: int64 description: "Character references the script can read, each bound to one\ \ of the user's own characters." corporations: type: object additionalProperties: type: integer format: int64 description: "Corporation references the script can read, each bound to\ \ a corporation of one of the user's own characters." walletDivisions: type: object additionalProperties: $ref: "#/components/schemas/WalletDivisionTargetResponse" description: "Corporation wallet division references the script can read,\ \ each bound to a corporation of one of the user's own characters." required: - characters - corporations - ledgers - walletDivisions RuleScriptResponse: type: object description: "A named rule script within the book, together with its scope." properties: name: type: string description: Unique script name within the book. example: sales scope: $ref: "#/components/schemas/RuleScopeResponse" description: The ledgers and other resources bound to this script. script: type: string description: The classification script source. example: transfer.to('wallet') required: - name - scope - script WalletDivisionTargetResponse: type: object description: A corporation wallet division bound to the script. properties: corporationId: type: integer format: int64 description: The corporation the wallet division belongs to. example: 98000001 division: type: integer format: int32 description: "The wallet division number, from 1 to 7." example: 1 required: - corporationId - division UpdateMainLedgerRequest: type: object description: Request to update an existing main ledger. properties: name: type: string description: New name for the ledger. example: Main wallet required: - name MainLedgerResponse: allOf: - $ref: "#/components/schemas/LedgerResponse" - type: object properties: ledgerId: type: string format: uuid description: Unique ledger identifier. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: type: string description: Ledger name. example: Main wallet balance: type: number description: Current ISK balance of the ledger. example: 1500000.0 description: "A main ledger: a standalone ledger with its own balance." required: - balance - ledgerId - name UpdateCombinedLedgerRequest: type: object description: Request to update an existing combined ledger; replaces its name and member set. properties: name: type: string description: New name for the combined ledger. example: All wallets memberLedgerIds: type: array description: Ids of the ledgers to aggregate. items: type: string format: uuid required: - memberLedgerIds - name CombinedLedgerResponse: allOf: - $ref: "#/components/schemas/LedgerResponse" - type: object properties: ledgerId: type: string format: uuid description: Unique ledger identifier. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 name: type: string description: Ledger name. example: All wallets balance: type: number description: Aggregate ISK balance across all member ledgers. example: 1500000.0 memberLedgerIds: type: array description: Ids of the ledgers aggregated by this combined ledger. items: type: string format: uuid description: "A combined ledger: an aggregate whose balance is the sum of its\ \ member ledgers." required: - balance - ledgerId - memberLedgerIds - name MarketTypeStackRequest: type: object description: A quantity of a single market type to reprocess. properties: marketTypeId: type: integer format: int64 description: EVE market type (item) id to reprocess. example: 1230 quantity: type: integer format: int64 description: Number of units to reprocess. example: 1000 required: - marketTypeId - quantity ReprocessItemsRequest: type: object description: Request to reprocess a set of item stacks on behalf of a character. properties: characterId: type: integer format: int64 description: EVE character id whose reprocessing skills and facility standings are applied. example: 2112625428 items: type: array description: Item stacks to reprocess. items: $ref: "#/components/schemas/MarketTypeStackRequest" required: - characterId - items MarketTypeStackAppraisalResponse: type: object description: A market type stack valued at current buy and sell prices. properties: marketTypeId: type: integer format: int64 description: EVE market type (item) id. example: 34 quantity: type: integer format: int64 description: Number of units in the stack. example: 1000 buy: type: number description: "Total buy value of the stack, in ISK." example: 5420.0 sell: type: number description: "Total sell value of the stack, in ISK." example: 6100.0 orderCount: type: integer format: int64 description: Number of market orders considered for the valuation. example: 128 required: - buy - marketTypeId - orderCount - quantity - sell ReprocessingResultResponse: type: object description: "Result of reprocessing an item stack: the input stack and the\ \ resulting material outputs, each valued at market prices." properties: input: $ref: "#/components/schemas/MarketTypeStackAppraisalResponse" description: The input stack that was reprocessed. output: type: array description: Material stacks yielded by reprocessing the input. items: $ref: "#/components/schemas/MarketTypeStackAppraisalResponse" required: - input - output RefreshResponse: type: object description: A freshly minted access token. properties: accessToken: type: string description: Short-lived bearer access token (JWT) for the Authorization header. required: - accessToken MarketTypeStackResponse: type: object description: A quantity of a single market type. properties: marketTypeId: type: integer format: int64 description: EVE market type (item) id. example: 34 quantity: type: integer format: int64 description: Number of units in the stack. example: 1000 required: - marketTypeId - quantity CreateMainLedgerRequest: type: object description: Request to create a new main ledger. properties: name: type: string description: Name for the new ledger. example: Main wallet required: - name CreateCombinedLedgerRequest: type: object description: Request to create a new combined ledger aggregating the given member ledgers. properties: name: type: string description: Name for the new combined ledger. example: All wallets memberLedgerIds: type: array description: Ids of the ledgers to aggregate. items: type: string format: uuid required: - memberLedgerIds - name ActivitySourceRequest: type: object description: "Where a manual activity is attributed: a character, a ledger,\ \ or nothing. CORPORATION is not accepted." properties: type: type: string description: The kind of source. enum: - CHARACTER - LEDGER - NONE example: CHARACTER characterId: type: - integer - "null" format: int64 description: "EVE character id, when the source is a character." example: 2112625428 ledgerId: type: - string - "null" format: uuid description: "Ledger id, when the source is a ledger." example: 0199a1b2-c3d4-7e5f-8a90-1b2c3d4e5f60 required: - characterId - ledgerId - type ManualActivityRequest: type: object description: Request to manually record an acquisition (buy) or consumption (sell) of an item. properties: source: $ref: "#/components/schemas/ActivitySourceRequest" description: Where the activity is attributed. marketTypeId: type: integer format: int64 description: EVE type id of the traded item. example: 34 quantity: type: integer format: int64 description: Number of units. example: 1000 unitPrice: type: number description: Price per unit. example: 5.42 datetime: type: - string - "null" format: date-time description: When the activity happened. Defaults to now when omitted. taxes: type: - number - "null" description: Taxes paid. Defaults to 0 when omitted. example: 0 description: type: - string - "null" description: Free-form description. required: - datetime - description - marketTypeId - quantity - source - taxes - unitPrice CharacterResponse: type: object description: An EVE Online character. properties: characterId: type: integer format: int64 description: EVE character id. example: 2112625428 name: type: string description: Character name. example: CCP Falcon required: - characterId - name MeResponse: type: object description: The authenticated user and the characters they own. properties: userId: type: string format: uuid description: Unique user identifier. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 characters: type: array description: Characters owned by the user. items: $ref: "#/components/schemas/CharacterResponse" required: - characters - userId MarketScanResponse: type: object description: "Result of a market scan combining current prices, history quartiles\ \ and a computed profitability score for a market type." properties: marketTypeId: type: integer format: int64 description: EVE market type (item) id. example: 34 buy: type: number description: "Current best buy price, in ISK." example: 5.42 sell: type: number description: "Current best sell price, in ISK." example: 6.1 q1: type: number description: "First quartile (25th percentile) historical price, in ISK." example: 4.8 median: type: number description: "Median (50th percentile) historical price, in ISK." example: 5.42 q3: type: number description: "Third quartile (75th percentile) historical price, in ISK." example: 6.05 totalVolume: type: integer format: int64 description: Total traded volume over the scanned period. example: 15000000 trend: type: string description: Overall price trend over the scanned period. enum: - UP - DOWN - FLAT profit: type: number description: "Estimated profit per unit after fees and taxes, in ISK." example: 0.45 score: type: number description: Computed profitability score used to rank scan results. example: 0.82 required: - buy - marketTypeId - median - profit - q1 - q3 - score - sell - totalVolume - trend MarketHistoryResponse: type: object description: A single day of market history for a market type. properties: marketTypeId: type: integer format: int64 description: EVE market type (item) id. example: 34 date: type: string format: date description: Date the history entry covers. example: 2026-06-22 average: type: number description: "Average price for the day, in ISK." example: 5.42 highest: type: number description: "Highest price for the day, in ISK." example: 6.1 lowest: type: number description: "Lowest price for the day, in ISK." example: 4.8 orderCount: type: integer format: int64 description: Number of orders for the day. example: 320 volume: type: integer format: int64 description: Traded volume for the day. example: 12500000 required: - average - date - highest - lowest - marketTypeId - orderCount - volume HistoryQuartilesResponse: type: object description: Quartile statistics computed over a market type's price history. properties: marketTypeId: type: integer format: int64 description: EVE market type (item) id. example: 34 q1: type: number description: "First quartile (25th percentile) price, in ISK." example: 4.8 median: type: number description: "Median (50th percentile) price, in ISK." example: 5.42 q3: type: number description: "Third quartile (75th percentile) price, in ISK." example: 6.05 totalVolume: type: integer format: int64 description: Total traded volume over the period. example: 15000000 trend: type: string description: Overall price trend over the period. enum: - UP - DOWN - FLAT required: - marketTypeId - median - q1 - q3 - totalVolume - trend MarketTypeResponse: type: object description: An EVE Online market type (item) and its static attributes. properties: id: type: integer format: int64 description: EVE market type (item) id. example: 34 name: type: string description: Item name. example: Tritanium groupId: type: integer format: int64 description: Group id the item belongs to. example: 18 marketGroupId: type: integer format: int64 description: Market group id the item is listed under. example: 1857 description: type: string description: Item description. example: The main building block in space structures. published: type: boolean description: Whether the item is published and visible in game. example: true basePrice: type: - number - "null" description: "Base price of the item, in ISK, if defined." example: 2.99 volume: type: number format: double description: "Packaged volume of a single unit, in m³." example: 0.01 portionSize: type: integer format: int32 description: Number of units produced or reprocessed per portion. example: 1 iconId: type: - integer - "null" format: int64 description: "Icon id for the item, if defined." example: 1 required: - basePrice - description - groupId - iconId - id - marketGroupId - name - portionSize - published - volume MarketPriceResponse: type: object description: Current best buy and sell prices for a market type. properties: marketTypeId: type: integer format: int64 description: EVE market type (item) id. example: 34 buy: type: number description: "Best buy price, in ISK." example: 5.42 sell: type: number description: "Best sell price, in ISK." example: 6.1 orderCount: type: integer format: int64 description: Number of market orders considered. example: 128 required: - buy - marketTypeId - orderCount - sell MarketOrderResponse: type: object description: An open market order placed by one of the authenticated user's characters. properties: orderId: type: integer format: int64 description: EVE market order id. example: 5266893063 characterId: type: integer format: int64 description: EVE character id that owns the order. example: 2112625428 characterName: type: string description: Name of the character that owns the order. example: CCP Falcon marketTypeId: type: integer format: int64 description: EVE market type (item) id being traded. example: 34 locationId: type: integer format: int64 description: Location id (station or structure) the order is placed at. example: 60003760 regionId: type: integer format: int64 description: Region id the order resides in. example: 10000002 direction: type: string description: Trade direction of the order. enum: - BUY - SELL example: SELL price: type: number description: "Price per unit, in ISK." example: 5.42 volumeTotal: type: integer format: int64 description: Total volume the order was created with. example: 1000000 volumeRemain: type: integer format: int64 description: Volume still remaining on the order. example: 750000 minVolume: type: integer format: int32 description: Minimum volume that must be bought or sold in a single transaction. example: 1 range: type: string description: "Order range. For buy orders the matching range, for sell orders\ \ always 'region'." example: region duration: type: integer format: int32 description: "Duration of the order, in days." example: 90 issued: type: string format: date-time description: When the order was issued. example: 2026-06-22T05:12:25 escrow: type: number description: ISK held in escrow for a buy order; null for sell orders. example: 4065000.0 required: - characterId - characterName - direction - duration - escrow - issued - locationId - marketTypeId - minVolume - orderId - price - range - regionId - volumeRemain - volumeTotal DockableLocationResponse: type: object description: A market location (NPC station) with its containing solar system and region. properties: id: type: integer format: int64 description: EVE market location id (station id). example: 60003760 name: type: string description: Location name. example: Jita IV - Moon 4 - Caldari Navy Assembly Plant systemId: type: integer format: int64 description: Id of the solar system the location is in. example: 30000142 systemName: type: string description: Name of the solar system the location is in. example: Jita regionId: type: integer format: int64 description: Id of the region the location is in. example: 10000002 regionName: type: string description: Name of the region the location is in. example: The Forge required: - id - name - regionId - regionName - systemId - systemName LedgerResponse: description: "A ledger, either a standalone main ledger or a combined ledger\ \ aggregating others." discriminator: propertyName: type mapping: MAIN: "#/components/schemas/MainLedgerResponse" COMBINED: "#/components/schemas/CombinedLedgerResponse" oneOf: - $ref: "#/components/schemas/MainLedgerResponse" - $ref: "#/components/schemas/CombinedLedgerResponse" properties: type: type: string required: - type ActivitySourceResponse: type: object description: "Where an activity or transaction came from: a character, a corporation\ \ wallet, a ledger, or nothing (a manual entry)." properties: type: type: string description: The kind of source. enum: - CHARACTER - CORPORATION - LEDGER - NONE example: CHARACTER characterId: type: - integer - "null" format: int64 description: "EVE character id, when the source is a character." example: 2112625428 corporationId: type: - integer - "null" format: int64 description: "EVE corporation id, when the source is a corporation." example: 98000001 division: type: - integer - "null" format: int32 description: "Corporation wallet division (1-7), when the source is a corporation\ \ and it is known." example: 4 ledgerId: type: - string - "null" format: uuid description: "Ledger id, when the source is a ledger." example: 0199a1b2-c3d4-7e5f-8a90-1b2c3d4e5f60 required: - characterId - corporationId - division - ledgerId - type IskTransferResponse: allOf: - $ref: "#/components/schemas/TransferResponse" - type: object properties: fromLedgerId: type: string format: uuid description: Id of the ledger the ISK is debited from. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 toLedgerId: type: string format: uuid description: Id of the ledger the ISK is credited to. example: 5c1e6f2a-1234-4562-b3fc-2c963f66afa6 amount: type: number description: Amount of ISK transferred. example: 1500000.0 description: A transfer of ISK from one ledger to another. required: - amount - fromLedgerId - toLedgerId ItemTransferResponse: allOf: - $ref: "#/components/schemas/TransferResponse" - type: object properties: fromLedgerId: type: string format: uuid description: Id of the ledger the items are debited from. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 toLedgerId: type: string format: uuid description: Id of the ledger the items are credited to. example: 5c1e6f2a-1234-4562-b3fc-2c963f66afa6 marketTypeId: type: integer format: int64 description: EVE market type (item) id transferred. example: 34 quantity: type: integer format: int64 description: Number of units transferred. example: 1000 description: A transfer of an item stack from one ledger to another. required: - fromLedgerId - marketTypeId - quantity - toLedgerId TransactionResponse: type: object description: "A transaction: a dated, described group of transfers between ledgers." properties: transactionId: type: string format: uuid description: Unique transaction identifier. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 source: $ref: "#/components/schemas/ActivitySourceResponse" description: "Where the transaction is attributed: a character, a corporation,\ \ or nothing." datetime: type: string format: date-time description: When the transaction occurred. example: 2026-06-22T14:30:00 description: type: string description: Human-readable description of the transaction. example: Market sale of Tritanium transfers: type: array description: The transfers that make up this transaction. items: $ref: "#/components/schemas/TransferResponse" required: - datetime - description - source - transactionId - transfers TransferResponse: description: "A transfer between two ledgers, either of ISK or of an item stack." discriminator: propertyName: type mapping: ISK: "#/components/schemas/IskTransferResponse" ITEM: "#/components/schemas/ItemTransferResponse" oneOf: - $ref: "#/components/schemas/IskTransferResponse" - $ref: "#/components/schemas/ItemTransferResponse" properties: type: type: string required: - type DailyProfitResponse: type: object description: "Profit for a single day: ISK in, ISK out, and their difference." properties: date: type: string format: date description: The UTC (EVE) day this profit is for. example: 2026-06-22 iskIn: type: number description: Total ISK that entered the ledger on this day. example: 1500000.0 iskOut: type: number description: Total ISK that left the ledger on this day. example: 500000.0 profit: type: number description: "Profit for the day: iskIn minus iskOut." example: 1000000.0 required: - date - iskIn - iskOut - profit BalanceResponse: type: object description: "The balance of a ledger: its ISK total plus the quantity of each\ \ item type held." properties: iskBalance: type: number description: ISK balance of the ledger. example: 1500000.0 itemBalances: type: array description: Per-item-type quantities held in the ledger. items: $ref: "#/components/schemas/ItemBalanceResponse" required: - iskBalance - itemBalances ItemBalanceResponse: type: object description: Quantity of a single item type held in a ledger. properties: typeId: type: integer format: int64 description: EVE market type (item) id. example: 34 quantity: type: integer format: int64 description: Number of units held. example: 1000 required: - quantity - typeId CorporationResponse: type: object description: An EVE Online corporation. properties: corporationId: type: integer format: int64 description: EVE corporation id. example: 98000001 name: type: string description: Corporation name. example: Center for Advanced Studies ticker: type: string description: Corporation ticker. example: CAS allianceId: type: integer format: int64 description: "EVE alliance id, null when the corporation is not in an alliance." example: 99000001 required: - allianceId - corporationId - name - ticker SseEmitter: type: object properties: timeout: type: integer format: int64 required: - timeout AcquisitionResponse: type: object description: "A single acquisition of a market type, tracking the remaining\ \ quantity available in the FIFO cost pool." properties: acquisitionId: type: string format: uuid description: Unique acquisition identifier. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 ledgerId: type: string format: uuid description: Ledger the acquisition is held in. example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 source: $ref: "#/components/schemas/ActivitySourceResponse" description: "Where the acquisition came from: a character, a corporation,\ \ or nothing." marketTypeId: type: integer format: int64 description: EVE market type (item) id that was acquired. example: 34 datetime: type: string format: date-time description: When the acquisition occurred. example: 2026-06-22T14:30:00 quantity: type: integer format: int64 description: Quantity originally acquired. example: 1000 remaining: type: integer format: int64 description: Quantity still remaining in the FIFO cost pool. example: 250 unitCost: type: number description: "Cost per unit at acquisition time, in ISK." example: 5.42 required: - acquisitionId - datetime - ledgerId - marketTypeId - quantity - remaining - source - unitCost