A SpaceTraders Agent
at main 6.0 kB view raw
1const std = @import("std"); 2 3pub const accounts = @import("models/accounts.zig"); 4pub const agents = @import("models/agents.zig"); 5pub const contracts = @import("models/contracts.zig"); 6pub const factions = @import("models/factions.zig"); 7pub const ships = @import("models/ships.zig"); 8 9pub const inventory = @import("models/inventory.zig"); 10 11pub const Info = @import("models/Info.zig"); 12 13pub fn Wrapper(comptime T: type) type { 14 return struct { 15 data: ?T = null, 16 meta: ?Meta = null, 17 @"error": ?Error = null, 18 }; 19} 20 21pub const Meta = struct { 22 total: u64 = 0, // [0, ∞) 23 page: u64 = 1, // [1, ∞) 24 limit: u8 = 10, // [1, 20] 25}; 26 27pub const Query = struct { 28 page: u64 = 1, 29 /// How many entries to return per page 30 /// min: 1, max: 20 31 limit: u64 = 20, 32 33 pub fn format(this: @This(), writer: *std.Io.Writer) std.Io.Writer.Error!void { 34 try writer.print("?page={}&limit={}", .{ this.page, this.limit }); 35 } 36}; 37 38pub const Error = struct { 39 message: []const u8, 40 code: ErrorCode, 41 data: ?Data = null, 42 requestId: ?[]const u8 = null, 43 44 pub const Data = struct { 45 // Rate Limit 46 type: ?[]const u8 = null, 47 retryAfter: ?u64 = null, 48 limitBurst: ?u64 = null, 49 limitPerSecond: ?u64 = null, 50 remaining: ?u64 = null, 51 reset: ?[]const u8 = null, 52 // Wrong token 53 expectedSubject: ?[]const u8 = null, 54 receivedSubject: ?[]const u8 = null, 55 }; 56}; 57 58pub const Cooldown = struct { 59 shipSymbol: []const u8, 60 totalSeconds: u64, 61 remainingSeconds: u64, 62 expiration: ?[]const u8 = null, 63}; 64 65/// List of Possible Error Codes 66/// 67/// Obtained via [/error-codes](https://spacetraders.io/openapi#tag/global/GET/error-codes) 68pub const ErrorCode = enum(u16) { 69 // Standart Error Codes 70 notFound = 404, 71 tooManyRequests = 429, 72 ddosProtection = 502, 73 74 // SpaceTraders Error Codes 75 responseSerializationError = 3000, 76 unprocessableInputError = 3001, 77 allErrorHandlersFailedError = 3002, 78 systemStatusMaintenanceError = 3100, 79 resetError = 3200, 80 cooldownConflictError = 4000, 81 waypointNoAccessError = 4001, 82 tokenEmptyError = 4100, 83 tokenMissingSubjectError = 4101, 84 tokenInvalidSubjectError = 4102, 85 missingTokenRequestError = 4103, 86 invalidTokenRequestError = 4104, 87 invalidTokenSubjectError = 4105, 88 accountNotExistsError = 4106, 89 agentNotExistsError = 4107, 90 accountHasNoAgentError = 4108, 91 tokenInvalidVersionError = 4109, 92 registerAgentSymbolReservedError = 4110, 93 registerAgentConflictSymbolError = 4111, 94 registerAgentNoStartingLocationsError = 4112, 95 tokenResetDateMismatchError = 4113, 96 invalidAccountRoleError = 4114, 97 invalidTokenError = 4115, 98 missingAccountTokenRequest = 4116, 99 navigateInTransitError = 4200, 100 navigateInvalidDestinationError = 4201, 101 navigateOutsideSystemError = 4202, 102 navigateInsufficientFuelError = 4203, 103 navigateSameDestinationError = 4204, 104 shipExtractInvalidWaypointError = 4205, 105 shipExtractPermissionError = 4206, 106 shipInTransitError = 4214, 107 shipMissingSensorArraysError = 4215, 108 purchaseShipCreditsError = 4216, 109 shipCargoExceedsLimitError = 4217, 110 shipCargoMissingError = 4218, 111 shipCargoUnitCountError = 4219, 112 shipSurveyVerificationError = 4220, 113 shipSurveyExpirationError = 4221, 114 shipSurveyWaypointTypeError = 4222, 115 shipSurveyOrbitError = 4223, 116 shipSurveyExhaustedError = 4224, 117 shipCargoFullError = 4228, 118 waypointChartedError = 4230, 119 shipTransferShipNotFound = 4231, 120 shipTransferAgentConflict = 4232, 121 shipTransferSameShipConflict = 4233, 122 shipTransferLocationConflict = 4234, 123 warpInsideSystemError = 4235, 124 shipNotInOrbitError = 4236, 125 shipInvalidRefineryGoodError = 4237, 126 shipInvalidRefineryTypeError = 4238, 127 shipMissingRefineryError = 4239, 128 shipMissingSurveyorError = 4240, 129 shipMissingWarpDriveError = 4241, 130 shipMissingMineralProcessorError = 4242, 131 shipMissingMiningLasersError = 4243, 132 shipNotDockedError = 4244, 133 purchaseShipNotPresentError = 4245, 134 shipMountNoShipyardError = 4246, 135 shipMissingMountError = 4247, 136 shipMountInsufficientCreditsError = 4248, 137 shipMissingPowerError = 4249, 138 shipMissingSlotsError = 4250, 139 shipMissingMountsError = 4251, 140 shipMissingCrewError = 4252, 141 shipExtractDestabilizedError = 4253, 142 shipJumpInvalidOriginError = 4254, 143 shipJumpInvalidWaypointError = 4255, 144 shipJumpOriginUnderConstructionError = 4256, 145 shipMissingGasProcessorError = 4257, 146 shipMissingGasSiphonsError = 4258, 147 shipSiphonInvalidWaypointError = 4259, 148 shipSiphonPermissionError = 4260, 149 waypointNoYieldError = 4261, 150 shipJumpDestinationUnderConstructionError = 4262, 151 shipScrapInvalidTraitError = 4263, 152 shipRepairInvalidTraitError = 4264, 153 agentInsufficientCreditsError = 4265, 154 shipModuleNoShipyardError = 4266, 155 shipModuleNotInstalledError = 4267, 156 shipModuleInsufficientCreditsError = 4268, 157 cantSlowDownWhileInTransitError = 4269, 158 shipExtractInvalidSurveyLocationError = 4270, 159 shipTransferDockedOrbitConflict = 4271, 160 acceptContractNotAuthorizedError = 4500, 161 acceptContractConflictError = 4501, 162 fulfillContractDeliveryError = 4502, 163 contractDeadlineError = 4503, 164 contractFulfilledError = 4504, 165 contractNotAcceptedError = 4505, 166 contractNotAuthorizedError = 4506, 167 shipDeliverTermsError = 4508, 168 shipDeliverFulfilledError = 4509, 169 shipDeliverInvalidLocationError = 4510, 170 existingContractError = 4511, 171 marketTradeInsufficientCreditsError = 4600, 172 marketTradeNoPurchaseError = 4601, 173 marketTradeNotSoldError = 4602, 174 marketTradeUnitLimitError = 4604, 175 shipNotAvailableForPurchaseError = 4605, 176 waypointNoFactionError = 4700, 177 constructionMaterialNotRequired = 4800, 178 constructionMaterialFulfilled = 4801, 179 shipConstructionInvalidLocationError = 4802, 180 unsupportedMediaTypeError = 5000, 181};