eve-esi-types 2.3.5 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -16
- package/esi-types-util3.md +186 -0
- package/lib/request-api.d.mts +5 -6
- package/lib/request-api.mjs +13 -11
- package/lib/rq-util.d.mts +25 -5
- package/lib/rq-util.mjs +35 -33
- package/lib/tagged-request-api.d.mts +9 -12
- package/lib/tagged-request-api.mjs +18 -19
- package/minimal-rq.mjs +18 -16
- package/package.json +1 -1
- package/tagged-rq.mjs +38 -10
- package/v2/esi-tagged-types.d.ts +21 -17
- package/v2/extra-types.d.ts +15 -15
- package/v2/index.d.ts +134 -56
- package/v2/response-map.d.ts +1 -1
- package/v2/types-index.d.ts +1 -1
- package/v2.d.mts +4 -14
- package/v2.mjs +26 -21
- package/esi-types-util.md +0 -127
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
/**
|
|
10
10
|
* @file eve-esi-types/lib/tagged-request-api.mts
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
12
|
+
import { request2 } from "./request-api.mjs";
|
|
13
13
|
/**
|
|
14
|
-
* @import {
|
|
14
|
+
* @import { TESIRequestFunctionMethods2 } from "../v2"
|
|
15
15
|
*/
|
|
16
16
|
/**
|
|
17
17
|
* @typedef {`${string}${"" | `,${string}`}`} TMethodList
|
|
@@ -36,37 +36,36 @@ const ESITagMethodMapping = [
|
|
|
36
36
|
"Wars:get"
|
|
37
37
|
];
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* + The `ESI request API object` constructed by `injectESIRequestBody` lists narrowed endpoints by accessing the camel-cased "tags" members.
|
|
39
|
+
* Decorates the ESI request body into a tagged ESI request map.
|
|
42
40
|
*
|
|
43
41
|
* @example
|
|
44
42
|
* import * as taggedApi from "eve-esi-types/lib/tagged-request-api.mjs";
|
|
45
43
|
*
|
|
46
|
-
* const esiRequest = taggedApi.
|
|
44
|
+
* const esiRequest = taggedApi.decoreateESIRequestBody(...);
|
|
47
45
|
* const ret = await esiRequest.universe.get("/universe/structures/", { query: { filter: "market" }});
|
|
48
46
|
*
|
|
49
47
|
* @template {Record<string, unknown>} Opt - The options type for the request.
|
|
50
|
-
* @param {
|
|
51
|
-
* @returns {XESI.
|
|
52
|
-
* @since 2.3
|
|
48
|
+
* @param {TESIRequestFunctionSignature2<Opt>} requestBody - The function signature for the ESI request.
|
|
49
|
+
* @returns {XESI.TaggedESIRequestMap2<Opt>} - The tagged ESI request map.
|
|
53
50
|
*/
|
|
54
|
-
export function
|
|
55
|
-
const rq = /** @type {XESI.
|
|
51
|
+
export function decoreateESIRequestBody(requestBody) {
|
|
52
|
+
const rq = /** @type {XESI.TaggedESIRequestMap2<Opt>} */ ({});
|
|
56
53
|
// DEVNOTE: 2025/03/08 - In reality, you only need one function instance for each of "get", "post", "put", and "delete",
|
|
57
54
|
// so you can just refer to the cached functions as a map.
|
|
58
|
-
const methodMap = /** @type {
|
|
55
|
+
const methodMap = /** @type {TESIRequestFunctionMethods2<Opt>} */ ({});
|
|
59
56
|
/** @type {TESIEntryMethod[]} */ (["get", "post", "put", "delete"]).forEach((method) => {
|
|
60
|
-
methodMap[method] = /** @type {
|
|
57
|
+
methodMap[method] = /** @type {TESIRequestFunctionEachMethod2<typeof method, Opt>} */ (
|
|
58
|
+
// @ts-expect-error Type peeling due to differences in inference process
|
|
59
|
+
(e, opt) => requestBody(method, e, opt));
|
|
61
60
|
});
|
|
62
61
|
for (const tagEntry of ESITagMethodMapping) {
|
|
63
62
|
const [tag, methodList] = /** @type {[tag: XESI.ESITags, methods: TMethodList]} */ (tagEntry.split(":"));
|
|
64
63
|
const methods = /** @type {TESIEntryMethod[]} */ (methodList.split(","));
|
|
65
|
-
const entry = /** @type {XESI.
|
|
64
|
+
const entry = /** @type {XESI.ESITaggedEndpointRequest2<typeof tag, Opt>} */ ({});
|
|
66
65
|
for (const method of methods) {
|
|
67
66
|
// However, from the point of view of type annotation, the parameters are different, so you need to cast it as `as type` instead of `satisfies`.
|
|
68
67
|
// @ts-expect-error
|
|
69
|
-
entry[method] = /** @type {XESI.
|
|
68
|
+
entry[method] = /** @type {XESI.TaggedEndpointRequestFunction2<typeof method, typeof tag, Opt>} */ (methodMap[method]);
|
|
70
69
|
}
|
|
71
70
|
const camelCased = /** @type {XESI.LCamelCase<XESI.ESITags>} */ (tag[0].toLowerCase() + tag.slice(1).replace(/\s(.)/g, "$1"));
|
|
72
71
|
rq[camelCased] = entry;
|
|
@@ -77,9 +76,9 @@ export function injectESIRequestBody(requestBody) {
|
|
|
77
76
|
* @import { ESIRequestOptions } from "./rq-util.mjs";
|
|
78
77
|
*/
|
|
79
78
|
/**
|
|
80
|
-
* Injects the minimal implementation of ESI requests into `XESI.
|
|
79
|
+
* Injects the minimal implementation of ESI requests into `XESI.TaggedESIRequestMap2`.
|
|
81
80
|
*
|
|
82
|
-
* @since 2.
|
|
83
|
-
* @type {XESI.
|
|
81
|
+
* @since 2.x
|
|
82
|
+
* @type {XESI.TaggedESIRequestMap2<ESIRequestOptions>}
|
|
84
83
|
*/
|
|
85
|
-
export const esi =
|
|
84
|
+
export const esi = decoreateESIRequestBody(request2);
|
package/minimal-rq.mjs
CHANGED
|
@@ -10,55 +10,56 @@
|
|
|
10
10
|
// imports
|
|
11
11
|
// - - - - - - - - - - - - - - - - - - - -
|
|
12
12
|
import * as util from "./lib/rq-util.mjs";
|
|
13
|
-
import {
|
|
13
|
+
import { request2 } from "./lib/request-api.mjs";
|
|
14
14
|
// - - - - - - - - - - - - - - - - - - - -
|
|
15
15
|
// constants, types
|
|
16
16
|
// - - - - - - - - - - - - - - - - - - - -
|
|
17
17
|
// shorthands
|
|
18
18
|
const log = util.getUniversalLogger("[request-mini]: ");
|
|
19
19
|
/**
|
|
20
|
-
* @typedef {import("./v2").
|
|
21
|
-
* @typedef {import("./v2").
|
|
20
|
+
* @typedef {import("./v2").IESIRequestFunction2<util.ESIRequestOptions>} IESIRequestFunction2
|
|
21
|
+
* @typedef {import("./v2").TESIRequestFunctionMethods2<util.ESIRequestOptions>} TESIRequestFunctionMethods2
|
|
22
22
|
*/
|
|
23
23
|
// - - - - - - - - - - - - - - - - - - - -
|
|
24
24
|
// main functions
|
|
25
25
|
// - - - - - - - - - - - - - - - - - - - -
|
|
26
26
|
//
|
|
27
|
-
// Delegates implementation to `request` (
|
|
27
|
+
// Delegates implementation to `request` (TESIRequestFunctionMethods2)
|
|
28
28
|
//
|
|
29
|
-
const esiMethods = /** @type {
|
|
29
|
+
const esiMethods = /** @type {TESIRequestFunctionMethods2} */ ({});
|
|
30
30
|
/** @type {TESIEntryMethod[]} */ (["get", "post", "put", "delete"]).forEach((method) => {
|
|
31
|
-
esiMethods[method] = /** @type {
|
|
32
|
-
|
|
31
|
+
esiMethods[method] = /** @type {TESIRequestFunctionEachMethod2<typeof method>} */ (function (endpoint, opt) {
|
|
32
|
+
// @ts-expect-error
|
|
33
|
+
return request2(method, endpoint, opt);
|
|
33
34
|
});
|
|
34
35
|
});
|
|
35
36
|
// It should complete correctly.
|
|
36
37
|
/**
|
|
37
|
-
* @param {
|
|
38
|
+
* @param {IESIRequestFunction2} fn
|
|
38
39
|
*/
|
|
39
|
-
async function
|
|
40
|
+
async function getEVEStatus2(fn) {
|
|
40
41
|
await util.getSDEVersion().then(sdeVersion => log(`sdeVersion: ${sdeVersion}`.blue));
|
|
41
42
|
await util.fireRequestsDoesNotRequireAuth(fn);
|
|
42
43
|
CaseIESIRequestFunctionMethods: {
|
|
43
44
|
await util.fireRequestsDoesNotRequireAuth(esiMethods);
|
|
44
45
|
}
|
|
45
46
|
const { clog, rlog } = util.getLogger();
|
|
46
|
-
|
|
47
|
+
CaseIESIRequestFunction2: {
|
|
47
48
|
const ID_CCP_Zoetrope = 2112625428;
|
|
48
49
|
// - - - - - - - - - - - -
|
|
49
50
|
// Character
|
|
50
51
|
// - - - - - - - - - - - -
|
|
51
52
|
// Here, I borrow data from "CCP Zoetrope".
|
|
52
|
-
rlog("- - - - - - - > run as
|
|
53
|
+
rlog("- - - - - - - > run as IESIRequestFunction2<ESIRequestOptions>".red);
|
|
53
54
|
clog();
|
|
54
|
-
await fn.get("/characters/{character_id}/", ID_CCP_Zoetrope).then(log);
|
|
55
|
+
await fn.get("/characters/{character_id}/", { pathParams: ID_CCP_Zoetrope }).then(log);
|
|
55
56
|
clog('(portrait)');
|
|
56
|
-
await fn.get(
|
|
57
|
+
await fn.get(`/characters/${ID_CCP_Zoetrope}/portrait/`).then(log);
|
|
57
58
|
clog('(affiliation)');
|
|
58
59
|
const affiliation = await fn.post("/characters/affiliation/", { body: [ID_CCP_Zoetrope] });
|
|
59
60
|
log(affiliation);
|
|
60
61
|
clog('(corporation)');
|
|
61
|
-
await fn.get(
|
|
62
|
+
await fn.get(`/corporations/${affiliation[0].corporation_id}/`).then(log);
|
|
62
63
|
rlog("get:/incursions/".green);
|
|
63
64
|
await fn.get("/incursions/").then(log);
|
|
64
65
|
// - - - - - - - - - - - -
|
|
@@ -68,7 +69,8 @@ async function getEVEStatus(fn) {
|
|
|
68
69
|
const ids = await fn.post("/universe/ids/", { body: ["the forge", "plex"] });
|
|
69
70
|
log(ids.inventory_types, ids.regions);
|
|
70
71
|
rlog(`get:/markets/${ids?.regions?.[0].id}/orders/?type_id=${ids?.inventory_types?.[0].id}, item PLEX`.green);
|
|
71
|
-
const orders = await fn.get("/markets/{region_id}/orders/",
|
|
72
|
+
const orders = await fn.get("/markets/{region_id}/orders/", {
|
|
73
|
+
pathParams: ids?.regions?.[0].id || 0,
|
|
72
74
|
query: {
|
|
73
75
|
// page: 1,
|
|
74
76
|
order_type: "sell",
|
|
@@ -80,7 +82,7 @@ async function getEVEStatus(fn) {
|
|
|
80
82
|
return fn.get("/status/");
|
|
81
83
|
}
|
|
82
84
|
const runTest = () => {
|
|
83
|
-
|
|
85
|
+
getEVEStatus2(request2).then(eveStatus => log(eveStatus));
|
|
84
86
|
};
|
|
85
87
|
// type following and run
|
|
86
88
|
// node minimal-rq.mjs -debug
|
package/package.json
CHANGED
package/tagged-rq.mjs
CHANGED
|
@@ -5,19 +5,47 @@
|
|
|
5
5
|
// https://opensource.org/licenses/mit-license.php
|
|
6
6
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
7
7
|
*/
|
|
8
|
+
/// <reference types="./v2"/>
|
|
8
9
|
/**
|
|
9
10
|
* @file tagged-rq.mts
|
|
10
|
-
* @command node tagged-rq.mjs -x
|
|
11
|
+
* @command node tagged-rq.mjs -x -debug
|
|
11
12
|
*/
|
|
12
|
-
import { esi
|
|
13
|
-
|
|
13
|
+
import { esi } from "./lib/tagged-request-api.mjs";
|
|
14
|
+
import * as util from "./lib/rq-util.mjs";
|
|
14
15
|
// Furthermore, the endpoint selected is narrowed down by "tags" and "method".
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
esi.alliance.get("/alliances/").then(aIds => {
|
|
17
|
+
console.log(`get:alliances, id size=${aIds.length}`);
|
|
18
|
+
// for (const aid of aIds.slice(0, 20)) {
|
|
19
|
+
// esi.alliance.get(`/alliances/${aid}/`).then(console.log);
|
|
20
|
+
// }
|
|
21
|
+
});
|
|
22
|
+
esi.character.get("/characters/{character_id}/", { pathParams: 2112625428 }).then(console.log);
|
|
23
|
+
esi.universe.post("/universe/ids/", {
|
|
18
24
|
body: ["the forge", "plex"]
|
|
19
25
|
}).then(console.log);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}).then(console.log)
|
|
26
|
+
esi.universe.post("/universe/names/", {
|
|
27
|
+
body: [44992, 434243723, 109299958, 10000002]
|
|
28
|
+
}).then(console.log);
|
|
29
|
+
esi.universe.get("/universe/structures/", { query: { filter: "market" } }).then(console.log);
|
|
30
|
+
// node tagged-rq.mjs -x -withError
|
|
31
|
+
if (util.is("withError")) {
|
|
32
|
+
esi.assets.get("/characters/2112625428/assets/", {
|
|
33
|
+
auth: true
|
|
34
|
+
}).then(console.log).catch(console.log);
|
|
35
|
+
esi.mail.post("/characters/2112625428/mail/", /** @satisfies {Pick<TESIResponsePostEntry<"/characters/{character_id}/mail/">, "auth" | "body">} */ ({
|
|
36
|
+
auth: true,
|
|
37
|
+
body: {
|
|
38
|
+
subject: "test!!",
|
|
39
|
+
body: "",
|
|
40
|
+
recipients: [{
|
|
41
|
+
recipient_id: 2112625428, recipient_type: "character"
|
|
42
|
+
}]
|
|
43
|
+
},
|
|
44
|
+
// token: "s.s.s"
|
|
45
|
+
})).then(console.log).catch(console.log);
|
|
46
|
+
esi.fittings.delete("/characters/{character_id}/fittings/{fitting_id}/", {
|
|
47
|
+
pathParams: [1234, 56789],
|
|
48
|
+
auth: true
|
|
49
|
+
});
|
|
50
|
+
esi.character.post("/characters/affiliation/").catch(console.log);
|
|
51
|
+
}
|
package/v2/esi-tagged-types.d.ts
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* THIS DTS IS AUTO GENERATED, DO NOT EDIT
|
|
10
10
|
*
|
|
11
11
|
* @file eve-esi-types/v2/esi-tagged-types.d.ts
|
|
12
|
-
* @summary This file is auto-generated and defines version
|
|
12
|
+
* @summary This file is auto-generated and defines version 3.0.2 of the EVE Online ESI response types.
|
|
13
13
|
*/
|
|
14
|
-
import { TESIResponseOKMap } from "./index.d.ts";
|
|
14
|
+
import { TESIResponseOKMap, TPathParamsNever } from "./index.d.ts";
|
|
15
15
|
export * from "./index.d.ts";
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -67,7 +67,7 @@ export declare type InferMethod<Tag> = InferSomethingBy<Tag>
|
|
|
67
67
|
// type XPlanetary = InferMethod<"Planetary Interaction">;
|
|
68
68
|
|
|
69
69
|
// - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
70
|
-
// Utility Type `
|
|
70
|
+
// Utility Type `TaggedEndpointRequestFunction2`
|
|
71
71
|
// - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
72
72
|
/**
|
|
73
73
|
* Creates a function type for making requests to tagged endpoints.
|
|
@@ -86,15 +86,19 @@ export declare type InferMethod<Tag> = InferSomethingBy<Tag>
|
|
|
86
86
|
* @returns A promise that resolves to the response.
|
|
87
87
|
* @date 2025/2/28
|
|
88
88
|
*/
|
|
89
|
-
export declare type
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
export declare type TaggedEndpointRequestFunction2<M extends TESIEntryMethod, Tag extends ESITags, ActualOpt = {}> = <
|
|
90
|
+
RealEP extends ReplacePathParams<keyof TESIResponseOKMap[M] & string> | keyof TESIResponseOKMap[M],
|
|
91
|
+
EP extends InferEndpointOrigin<RealEP, SelectEndpointByTag<Tag, M>> extends never ? RealEP: InferEndpointOrigin<RealEP, SelectEndpointByTag<Tag, M>>,
|
|
92
|
+
PathParams extends RealEP extends EP ? IfNeedPathParams<EP>: TPathParamsNever,
|
|
93
|
+
Opt extends IdentifyParameters<TESIResponseOKMap[M][EP], ActualOpt & PathParams>,
|
|
94
|
+
R extends InferESIResponseResult<M, EP>,
|
|
95
|
+
// RealEPX = ReplacePathParamsX<RealEPX>,
|
|
96
|
+
// EPX = ReplacePathParams<EP>,
|
|
97
|
+
>(endpoint: RealEP, options?: Opt) => Promise<R>;
|
|
98
|
+
|
|
95
99
|
|
|
96
100
|
// - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
97
|
-
// Utility Type `
|
|
101
|
+
// Utility Type `ESITaggedEndpointRequest2`
|
|
98
102
|
// - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
99
103
|
/**
|
|
100
104
|
* Maps tags to their corresponding endpoint request functions.
|
|
@@ -102,9 +106,9 @@ export declare type TaggedEndpointRequestFunction<M extends TESIEntryMethod, Tag
|
|
|
102
106
|
* @template Tag - The tag to map.
|
|
103
107
|
* @date 2025/2/28
|
|
104
108
|
*/
|
|
105
|
-
export declare type
|
|
109
|
+
export declare type ESITaggedEndpointRequest2<Tag extends ESITags, ActualOpt = {}> = {
|
|
106
110
|
[tag in Tag]: {
|
|
107
|
-
[method in InferMethod<Tag>]:
|
|
111
|
+
[method in InferMethod<Tag>]: TaggedEndpointRequestFunction2<method, tag, ActualOpt>;
|
|
108
112
|
};
|
|
109
113
|
}[Tag];
|
|
110
114
|
|
|
@@ -132,22 +136,22 @@ export declare type SelectEndpointByTag<
|
|
|
132
136
|
|
|
133
137
|
/**
|
|
134
138
|
* Maps lower camel case tags to their corresponding endpoint request functions.
|
|
135
|
-
* @date 2025/
|
|
139
|
+
* @date 2025/3/12
|
|
136
140
|
*/
|
|
137
|
-
export declare type
|
|
138
|
-
[tag in ESITags as LCamelCase<tag>]:
|
|
141
|
+
export declare type TaggedESIRequestMap2<ActualOpt = {}> = {
|
|
142
|
+
[tag in ESITags as LCamelCase<tag>]: ESITaggedEndpointRequest2<tag, ActualOpt>;
|
|
139
143
|
};
|
|
140
144
|
|
|
141
145
|
/**
|
|
142
146
|
* Creates a partial map of lower camel case tags to their corresponding endpoint request functions.
|
|
143
147
|
* ```ts
|
|
144
148
|
* // implements "factionWarfare", "wallet"
|
|
145
|
-
* const esiRq:
|
|
149
|
+
* const esiRq: TaggedESIRequestMapPartial2<"factionWarfare" | "wallet">;
|
|
146
150
|
* ```
|
|
147
151
|
*
|
|
148
152
|
* @template Props - The properties to require in the partial map.
|
|
149
153
|
* @date 2025/2/28
|
|
150
154
|
*/
|
|
151
|
-
export declare type
|
|
155
|
+
export declare type TaggedESIRequestMapPartial2<Props extends LCamelCase<ESITags>> = RequireThese<Partial<TaggedESIRequestMap2>, Props>;
|
|
152
156
|
|
|
153
157
|
export as namespace XESI;
|
package/v2/extra-types.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @minItems 1
|
|
8
8
|
* @maxItems 1000
|
|
9
9
|
*/
|
|
10
|
-
type PostCharactersAffiliationCharacters = number[];
|
|
10
|
+
type PostCharactersAffiliationCharacters = [number, ...number[]];
|
|
11
11
|
|
|
12
12
|
/* post_characters_character_id_assets_locations body type, name: item_ids */
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ type PostCharactersAffiliationCharacters = number[];
|
|
|
17
17
|
* @minItems 1
|
|
18
18
|
* @maxItems 1000
|
|
19
19
|
*/
|
|
20
|
-
type PostCharactersCharacterIdAssetsLocationsItemIds = number[];
|
|
20
|
+
type PostCharactersCharacterIdAssetsLocationsItemIds = [number, ...number[]];
|
|
21
21
|
|
|
22
22
|
/* post_characters_character_id_assets_names body type, name: item_ids */
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ type PostCharactersCharacterIdAssetsLocationsItemIds = number[];
|
|
|
27
27
|
* @minItems 1
|
|
28
28
|
* @maxItems 1000
|
|
29
29
|
*/
|
|
30
|
-
type PostCharactersCharacterIdAssetsNamesItemIds = number[];
|
|
30
|
+
type PostCharactersCharacterIdAssetsNamesItemIds = [number, ...number[]];
|
|
31
31
|
|
|
32
32
|
/* put_characters_character_id_calendar_event_id body type, name: response */
|
|
33
33
|
|
|
@@ -52,7 +52,7 @@ interface PutCharactersCharacterIdCalendarEventIdResponse {
|
|
|
52
52
|
* @minItems 1
|
|
53
53
|
* @maxItems 100
|
|
54
54
|
*/
|
|
55
|
-
type PostCharactersCharacterIdContactsContactIds = number[];
|
|
55
|
+
type PostCharactersCharacterIdContactsContactIds = [number, ...number[]];
|
|
56
56
|
|
|
57
57
|
/* put_characters_character_id_contacts body type, name: contact_ids */
|
|
58
58
|
|
|
@@ -62,7 +62,7 @@ type PostCharactersCharacterIdContactsContactIds = number[];
|
|
|
62
62
|
* @minItems 1
|
|
63
63
|
* @maxItems 100
|
|
64
64
|
*/
|
|
65
|
-
type PutCharactersCharacterIdContactsContactIds = number[];
|
|
65
|
+
type PutCharactersCharacterIdContactsContactIds = [number, ...number[]];
|
|
66
66
|
|
|
67
67
|
/* post_characters_character_id_cspa body type, name: characters */
|
|
68
68
|
|
|
@@ -72,7 +72,7 @@ type PutCharactersCharacterIdContactsContactIds = number[];
|
|
|
72
72
|
* @minItems 1
|
|
73
73
|
* @maxItems 100
|
|
74
74
|
*/
|
|
75
|
-
type PostCharactersCharacterIdCspaCharacters = number[];
|
|
75
|
+
type PostCharactersCharacterIdCspaCharacters = [number, ...number[]];
|
|
76
76
|
|
|
77
77
|
/* post_characters_character_id_fittings body type, name: fitting */
|
|
78
78
|
|
|
@@ -82,7 +82,7 @@ type PostCharactersCharacterIdCspaCharacters = number[];
|
|
|
82
82
|
* @minItems 1
|
|
83
83
|
* @maxItems 512
|
|
84
84
|
*/
|
|
85
|
-
type PostCharactersCharacterIdFittingsItems = PostCharactersCharacterIdFittingsItem[];
|
|
85
|
+
type PostCharactersCharacterIdFittingsItems = [PostCharactersCharacterIdFittingsItem, ...PostCharactersCharacterIdFittingsItem[]];
|
|
86
86
|
/**
|
|
87
87
|
* Fitting location for the item. Entries placed in 'Invalid' will be discarded. If this leaves the fitting with nothing, it will cause an error.
|
|
88
88
|
*/
|
|
@@ -168,7 +168,7 @@ interface PostCharactersCharacterIdFittingsItem {
|
|
|
168
168
|
* @minItems 1
|
|
169
169
|
* @maxItems 50
|
|
170
170
|
*/
|
|
171
|
-
type PostCharactersCharacterIdMailRecipients = PostCharactersCharacterIdMailRecipient[];
|
|
171
|
+
type PostCharactersCharacterIdMailRecipients = [PostCharactersCharacterIdMailRecipient, ...PostCharactersCharacterIdMailRecipient[]];
|
|
172
172
|
/**
|
|
173
173
|
* recipient_type string
|
|
174
174
|
*/
|
|
@@ -270,7 +270,7 @@ interface PutCharactersCharacterIdMailMailIdContents {
|
|
|
270
270
|
* @minItems 1
|
|
271
271
|
* @maxItems 1000
|
|
272
272
|
*/
|
|
273
|
-
type PostCorporationsCorporationIdAssetsLocationsItemIds = number[];
|
|
273
|
+
type PostCorporationsCorporationIdAssetsLocationsItemIds = [number, ...number[]];
|
|
274
274
|
|
|
275
275
|
/* post_corporations_corporation_id_assets_names body type, name: item_ids */
|
|
276
276
|
|
|
@@ -280,7 +280,7 @@ type PostCorporationsCorporationIdAssetsLocationsItemIds = number[];
|
|
|
280
280
|
* @minItems 1
|
|
281
281
|
* @maxItems 1000
|
|
282
282
|
*/
|
|
283
|
-
type PostCorporationsCorporationIdAssetsNamesItemIds = number[];
|
|
283
|
+
type PostCorporationsCorporationIdAssetsNamesItemIds = [number, ...number[]];
|
|
284
284
|
|
|
285
285
|
/* put_fleets_fleet_id body type, name: new_settings */
|
|
286
286
|
|
|
@@ -390,7 +390,7 @@ interface PutFleetsFleetIdWingsWingIdNaming {
|
|
|
390
390
|
* @minItems 1
|
|
391
391
|
* @maxItems 50
|
|
392
392
|
*/
|
|
393
|
-
type PostUiOpenwindowNewmailRecipients = number[];
|
|
393
|
+
type PostUiOpenwindowNewmailRecipients = [number, ...number[]];
|
|
394
394
|
|
|
395
395
|
/**
|
|
396
396
|
* new_mail object
|
|
@@ -424,7 +424,7 @@ interface PostUiOpenwindowNewmailNewMail {
|
|
|
424
424
|
* @minItems 1
|
|
425
425
|
* @maxItems 500
|
|
426
426
|
*/
|
|
427
|
-
type PostUniverseIdsNames = string[];
|
|
427
|
+
type PostUniverseIdsNames = [string, ...string[]];
|
|
428
428
|
|
|
429
429
|
/* post_universe_names body type, name: ids */
|
|
430
430
|
|
|
@@ -434,7 +434,7 @@ type PostUniverseIdsNames = string[];
|
|
|
434
434
|
* @minItems 1
|
|
435
435
|
* @maxItems 1000
|
|
436
436
|
*/
|
|
437
|
-
type PostUniverseNamesIds = number[];
|
|
437
|
+
type PostUniverseNamesIds = [number, ...number[]];
|
|
438
438
|
|
|
439
439
|
|
|
440
440
|
/*! query types */
|
|
@@ -446,7 +446,7 @@ type PostUniverseNamesIds = number[];
|
|
|
446
446
|
* @minItems 1
|
|
447
447
|
* @maxItems 20
|
|
448
448
|
*/
|
|
449
|
-
type DeleteCharactersCharacterIdContactsContactIds = number[];
|
|
449
|
+
type DeleteCharactersCharacterIdContactsContactIds = [number, ...number[]];
|
|
450
450
|
|
|
451
451
|
/* post_characters_character_id_contacts, label_ids query type */
|
|
452
452
|
|
|
@@ -497,7 +497,7 @@ type GetCharactersCharacterIdSearchCategory =
|
|
|
497
497
|
* @minItems 1
|
|
498
498
|
* @maxItems 11
|
|
499
499
|
*/
|
|
500
|
-
type GetCharactersCharacterIdSearchCategories = GetCharactersCharacterIdSearchCategory[];
|
|
500
|
+
type GetCharactersCharacterIdSearchCategories = [GetCharactersCharacterIdSearchCategory, ...GetCharactersCharacterIdSearchCategory[]];
|
|
501
501
|
|
|
502
502
|
/* get_characters_character_id_search, search query type */
|
|
503
503
|
|