@oasisomniverse/web5-api 1.0.0

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.
Files changed (92) hide show
  1. package/README.md +250 -0
  2. package/docs/README.md +44 -0
  3. package/docs/modules/Avatar.md +606 -0
  4. package/docs/modules/CelestialBodies.md +1051 -0
  5. package/docs/modules/CelestialBodiesMetaData.md +949 -0
  6. package/docs/modules/CelestialSpaces.md +1051 -0
  7. package/docs/modules/Chapters.md +955 -0
  8. package/docs/modules/Competition.md +594 -0
  9. package/docs/modules/Cosmic.md +3653 -0
  10. package/docs/modules/Games.md +2619 -0
  11. package/docs/modules/GeoHotSpots.md +1027 -0
  12. package/docs/modules/GeoNFTs.md +1049 -0
  13. package/docs/modules/Health.md +90 -0
  14. package/docs/modules/Holons.md +1139 -0
  15. package/docs/modules/HolonsMetaData.md +949 -0
  16. package/docs/modules/InventoryItems.md +1071 -0
  17. package/docs/modules/Libraries.md +1052 -0
  18. package/docs/modules/Missions.md +1286 -0
  19. package/docs/modules/NFTs.md +1008 -0
  20. package/docs/modules/OAPPs.md +1190 -0
  21. package/docs/modules/Parks.md +1079 -0
  22. package/docs/modules/Plugins.md +1138 -0
  23. package/docs/modules/Quests.md +1941 -0
  24. package/docs/modules/Runtimes.md +1112 -0
  25. package/docs/modules/STAR.md +178 -0
  26. package/docs/modules/Templates.md +990 -0
  27. package/docs/modules/Zomes.md +1049 -0
  28. package/docs/modules/ZomesMetaData.md +949 -0
  29. package/index.d.ts +97 -0
  30. package/index.js +3 -0
  31. package/index.mjs +4 -0
  32. package/package.json +117 -0
  33. package/src/core/httpClient.js +110 -0
  34. package/src/core/routeHelper.js +85 -0
  35. package/src/core/tokenStore.js +52 -0
  36. package/src/core/types.d.ts +18 -0
  37. package/src/index.js +60 -0
  38. package/src/modules/Auth.d.ts +15 -0
  39. package/src/modules/Auth.js +62 -0
  40. package/src/modules/Avatar.d.ts +45 -0
  41. package/src/modules/Avatar.js +47 -0
  42. package/src/modules/CelestialBodies.d.ts +72 -0
  43. package/src/modules/CelestialBodies.js +65 -0
  44. package/src/modules/CelestialBodiesMetaData.d.ts +69 -0
  45. package/src/modules/CelestialBodiesMetaData.js +61 -0
  46. package/src/modules/CelestialSpaces.d.ts +72 -0
  47. package/src/modules/CelestialSpaces.js +65 -0
  48. package/src/modules/Chapters.d.ts +66 -0
  49. package/src/modules/Chapters.js +61 -0
  50. package/src/modules/Competition.d.ts +33 -0
  51. package/src/modules/Competition.js +39 -0
  52. package/src/modules/Cosmic.d.ts +222 -0
  53. package/src/modules/Cosmic.js +165 -0
  54. package/src/modules/Games.d.ts +171 -0
  55. package/src/modules/Games.js +131 -0
  56. package/src/modules/GeoHotSpots.d.ts +66 -0
  57. package/src/modules/GeoHotSpots.js +61 -0
  58. package/src/modules/GeoNFTs.d.ts +72 -0
  59. package/src/modules/GeoNFTs.js +65 -0
  60. package/src/modules/Health.d.ts +12 -0
  61. package/src/modules/Health.js +25 -0
  62. package/src/modules/Holons.d.ts +78 -0
  63. package/src/modules/Holons.js +69 -0
  64. package/src/modules/HolonsMetaData.d.ts +69 -0
  65. package/src/modules/HolonsMetaData.js +61 -0
  66. package/src/modules/InventoryItems.d.ts +69 -0
  67. package/src/modules/InventoryItems.js +63 -0
  68. package/src/modules/Libraries.d.ts +72 -0
  69. package/src/modules/Libraries.js +65 -0
  70. package/src/modules/Missions.d.ts +87 -0
  71. package/src/modules/Missions.js +75 -0
  72. package/src/modules/NFTs.d.ts +69 -0
  73. package/src/modules/NFTs.js +63 -0
  74. package/src/modules/OAPPs.d.ts +69 -0
  75. package/src/modules/OAPPs.js +61 -0
  76. package/src/modules/Parks.d.ts +72 -0
  77. package/src/modules/Parks.js +65 -0
  78. package/src/modules/Plugins.d.ts +78 -0
  79. package/src/modules/Plugins.js +69 -0
  80. package/src/modules/Quests.d.ts +129 -0
  81. package/src/modules/Quests.js +101 -0
  82. package/src/modules/Runtimes.d.ts +81 -0
  83. package/src/modules/Runtimes.js +69 -0
  84. package/src/modules/STAR.d.ts +18 -0
  85. package/src/modules/STAR.js +29 -0
  86. package/src/modules/Templates.d.ts +72 -0
  87. package/src/modules/Templates.js +63 -0
  88. package/src/modules/Zomes.d.ts +72 -0
  89. package/src/modules/Zomes.js +65 -0
  90. package/src/modules/ZomesMetaData.d.ts +69 -0
  91. package/src/modules/ZomesMetaData.js +61 -0
  92. package/src/modules/index.js +67 -0
@@ -0,0 +1,1286 @@
1
+ # Missions — `star.missions`
2
+
3
+ Source controller: [`MissionsController.cs`](https://github.com/NextGenSoftwareUK/OASIS2/blob/main/STAR%20ODK/NextGenSoftware.OASIS.STAR.WebAPI/Controllers/MissionsController.cs)
4
+ Route prefix: `api/missions`
5
+ 27 operation(s).
6
+
7
+ Every method takes a single args object: any key matching a `{token}` in the route is substituted into the URL; everything else becomes the query string (GET/DELETE) or JSON body (POST/PUT). Every call resolves to the standard OASIS envelope:
8
+
9
+ ```ts
10
+ {
11
+ isError: boolean;
12
+ isWarning: boolean;
13
+ message: string;
14
+ errorCode?: string;
15
+ result: T; // see each endpoint's Response section below
16
+ }
17
+ ```
18
+
19
+ ## Operations
20
+
21
+ ### `activateMission`
22
+
23
+ Activates a mission.
24
+
25
+ **POST** `api/missions/{id}/activate`
26
+
27
+ Route parameters:
28
+
29
+ | Field | Type |
30
+ | --- | --- |
31
+ | `id` | `Guid` |
32
+
33
+ **Request**
34
+
35
+ Body fields:
36
+
37
+ | Field | Type |
38
+ | --- | --- |
39
+ | `version` | `int (optional)` |
40
+
41
+ **Response**
42
+
43
+ Standard `OASISResult` envelope (see top of this page) with:
44
+
45
+ `result` type: `IActionResult` (not part of the request/response payload).
46
+
47
+ **Example**
48
+
49
+ ```js
50
+ const { isError, message, result } = await star.missions.activateMission({
51
+ id: '<id>',
52
+ version: 1
53
+ });
54
+ if (isError) throw new Error(message);
55
+ console.log(result);
56
+ ```
57
+
58
+ Example response:
59
+
60
+ ```json
61
+ {
62
+ "isError": false,
63
+ "message": "",
64
+ "result": null
65
+ }
66
+ ```
67
+
68
+ ---
69
+
70
+ ### `cloneMission`
71
+
72
+ Clones an existing mission with a new name.
73
+
74
+ **POST** `api/missions/{id}/clone`
75
+
76
+ Route parameters:
77
+
78
+ | Field | Type |
79
+ | --- | --- |
80
+ | `id` | `Guid` |
81
+
82
+ **Request**
83
+
84
+ Body type: `CloneRequest`
85
+
86
+ | Field | Type |
87
+ | --- | --- |
88
+ | `NewName` | `string` |
89
+
90
+ **Response**
91
+
92
+ Standard `OASISResult` envelope (see top of this page) with:
93
+
94
+ `result` type: `IActionResult` (not part of the request/response payload).
95
+
96
+ **Example**
97
+
98
+ ```js
99
+ const { isError, message, result } = await star.missions.cloneMission({
100
+ id: '<id>',
101
+ newName: "example string"
102
+ });
103
+ if (isError) throw new Error(message);
104
+ console.log(result);
105
+ ```
106
+
107
+ Example response:
108
+
109
+ ```json
110
+ {
111
+ "isError": false,
112
+ "message": "",
113
+ "result": null
114
+ }
115
+ ```
116
+
117
+ ---
118
+
119
+ ### `completeMission`
120
+
121
+ Completes a mission for the authenticated avatar.
122
+
123
+ **POST** `api/missions/{id}/complete`
124
+
125
+ Route parameters:
126
+
127
+ | Field | Type |
128
+ | --- | --- |
129
+ | `id` | `Guid` |
130
+
131
+ **Request**
132
+
133
+ Body fields:
134
+
135
+ | Field | Type |
136
+ | --- | --- |
137
+ | `completionNotes` | `string (optional)` |
138
+
139
+ **Response**
140
+
141
+ Standard `OASISResult` envelope (see top of this page) with:
142
+
143
+ `result` type: `IActionResult` (not part of the request/response payload).
144
+
145
+ **Example**
146
+
147
+ ```js
148
+ const { isError, message, result } = await star.missions.completeMission({
149
+ id: '<id>',
150
+ completionNotes: 'example string'
151
+ });
152
+ if (isError) throw new Error(message);
153
+ console.log(result);
154
+ ```
155
+
156
+ Example response:
157
+
158
+ ```json
159
+ {
160
+ "isError": false,
161
+ "message": "",
162
+ "result": null
163
+ }
164
+ ```
165
+
166
+ ---
167
+
168
+ ### `createMission`
169
+
170
+ Creates a new mission for the authenticated avatar.
171
+
172
+ **POST** `api/missions`
173
+
174
+ **Request**
175
+
176
+ Body type: `IMission`
177
+
178
+ | Field | Type |
179
+ | --- | --- |
180
+ | `PublishedOn` | `DateTime` |
181
+ | `PublishedByAvatarId` | `Guid` |
182
+ | `PublishedByAvatar` | `IAvatar` |
183
+ | `Quests` | `IList<IQuest>` |
184
+ | `Chapters` | `IList<IChapter>` |
185
+
186
+ **Response**
187
+
188
+ Standard `OASISResult` envelope (see top of this page) with:
189
+
190
+ `result` type: `IActionResult` (not part of the request/response payload).
191
+
192
+ **Example**
193
+
194
+ ```js
195
+ const { isError, message, result } = await star.missions.createMission({
196
+ publishedOn: "2026-01-01T00:00:00Z",
197
+ publishedByAvatarId: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
198
+ publishedByAvatar: { "ProviderWallets": { "<ProviderType>": [{ "AvatarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "WalletId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "Name": "example string", "Description": /* <new string> */, "PrivateKey": "example string", "PublicKey": "example string", "WalletAddress": "example string", "WalletAddressSegwitP2SH": "example string", "SecretRecoveryPhrase": "example string", "Transactions": [{ "TransactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "FromWalletAddress": "example string", "ToWalletAddress": "example string", "Amount": 1.0, "Description": "example string", "CreatedDate": "2026-01-01T00:00:00Z", "TransactionType": { }, "TransactionCategory": { } }], "ProviderType": { }, "Balance": 1.0, "IsDefaultWallet": true }] }, "ProviderPrivateKey": { "<ProviderType>": "example string" }, "ProviderPublicKey": { "<ProviderType>": ["example string"] }, "ProviderUsername": { "<ProviderType>": "example string" }, "ProviderWalletAddress": { "<ProviderType>": ["example string"] }, "AvatarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "Title": "example string", "FirstName": "example string", "LastName": "example string", "FullName": "example string", "FullNameWithTitle": "example string", "Username": "example string", "Email": "example string", "Password": "example string", "AvatarType": { "Score": 1.0 }, "AcceptTerms": true, "IsVerified": true, "JwtToken": "example string", "PasswordReset": "2026-01-01T00:00:00Z", "RefreshToken": "example string", "RefreshTokens": [{ "Id": 1, "Avatar": {}, "Token": "example string", "Expires": "2026-01-01T00:00:00Z", "Created": "2026-01-01T00:00:00Z", "CreatedByIp": "example string", "Revoked": "2026-01-01T00:00:00Z", "RevokedByIp": "example string", "ReplacedByToken": "example string" }], "ResetToken": "example string", "ResetTokenExpires": "2026-01-01T00:00:00Z", "VerificationToken": "example string", "Verified": "2026-01-01T00:00:00Z", "LastBeamedIn": "2026-01-01T00:00:00Z", "LastBeamedOut": "2026-01-01T00:00:00Z", "IsBeamedIn": true, "Image2D": "example string", "Karma": 1, "Level": 1, "XP": 1 },
199
+ quests: [{ "ParentMissionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "ParentQuestId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "QuestType": { }, "GeoSpatialNFTIds": ["example string"], "GeoSpatialNFTs": [ /* <IOASISGeoSpatialNFT> */ ], "GeoHotSpotIds": ["example string"], "GeoHotSpots": [{ "TriggerType": { }, "Lat": 1.0, "Long": 1.0, "HotSpotRadiusInMetres": 1, "TimeInSecondsNeedToBeAtLocationToTriggerHotSpot": 1, "TimeInSecondsNeedToLookAt3DObjectOr2DImageToTriggerHotSpot": 1, "Object3D": "<base64-bytes>", "Image2D": "<base64-bytes>", "Rewards": [{ "Image2D": "<base64-bytes>", "Image2DURI": "https://example.com/asset.png", "ThumbnailUrl": "example string", "Object3D": "<base64-bytes>", "Object3DURI": "https://example.com/asset.png", "Quantity": 1, "Stack": true, "IsStackable": true, "GameSource": "example string", "ItemType": "example string", "NftId": "example string", "Rarity": "example string", "MaxQuantity": 1, "Weight": 1.0, "IsUsable": true, "IsTradeable": true, "OwnerAvatarId": "example string", "AcquiredOn": "2026-01-01T00:00:00Z", "LastUsedOn": "2026-01-01T00:00:00Z", "Properties": { "<string>": {} } }], "AudioData": "<base64-bytes>", "AudioUrl": "example string", "VideoData": "<base64-bytes>", "VideoUrl": "example string", "TextContent": "example string", "WebsiteUrl": "example string" }], "CurrentSubQuest": {}, "CurrentSubQuestNumber": 1 }],
200
+ chapters: [{ "ChapterDisplayName": "example string" }]
201
+ });
202
+ if (isError) throw new Error(message);
203
+ console.log(result);
204
+ ```
205
+
206
+ Example response:
207
+
208
+ ```json
209
+ {
210
+ "isError": false,
211
+ "message": "",
212
+ "result": null
213
+ }
214
+ ```
215
+
216
+ ---
217
+
218
+ ### `createMissionWithOptions`
219
+
220
+ Creates a new mission with specified parameters.
221
+
222
+ **POST** `api/missions/create`
223
+
224
+ **Request**
225
+
226
+ Body type: `CreateMissionRequest`
227
+
228
+ | Field | Type |
229
+ | --- | --- |
230
+ | `Name` | `string` |
231
+ | `Description` | `string` |
232
+ | `HolonSubType` | `HolonType` |
233
+ | `SourceFolderPath` | `string` |
234
+ | `CreateOptions` | `ISTARNETCreateOptions<Mission, STARNETDNA>` |
235
+
236
+ **Response**
237
+
238
+ Standard `OASISResult` envelope (see top of this page) with:
239
+
240
+ `result` type: `IActionResult` (not part of the request/response payload).
241
+
242
+ **Example**
243
+
244
+ ```js
245
+ const { isError, message, result } = await star.missions.createMissionWithOptions({
246
+ name: "example string",
247
+ description: "example string",
248
+ holonSubType: { },
249
+ sourceFolderPath: "example string",
250
+ createOptions: { "STARNETHolon": /* <T1> */, "STARNETDNA": /* <T2> */, "MetaTagMappings": { "MetaHolonTags": [{ "HolonName": "example string", "HolonType": { }, "NodeName": "example string", "NodeType": { "Score": 1.0 }, "MetaTag": "example string" }], "MetaTags": { "<string>": "example string" } }, "CheckIfSourcePathExists": true, "CustomCreateParams": { "<string>": {} } }
251
+ });
252
+ if (isError) throw new Error(message);
253
+ console.log(result);
254
+ ```
255
+
256
+ Example response:
257
+
258
+ ```json
259
+ {
260
+ "isError": false,
261
+ "message": "",
262
+ "result": null
263
+ }
264
+ ```
265
+
266
+ ---
267
+
268
+ ### `deactivateMission`
269
+
270
+ Deactivates a mission.
271
+
272
+ **POST** `api/missions/{id}/deactivate`
273
+
274
+ Route parameters:
275
+
276
+ | Field | Type |
277
+ | --- | --- |
278
+ | `id` | `Guid` |
279
+
280
+ **Request**
281
+
282
+ Body fields:
283
+
284
+ | Field | Type |
285
+ | --- | --- |
286
+ | `version` | `int (optional)` |
287
+
288
+ **Response**
289
+
290
+ Standard `OASISResult` envelope (see top of this page) with:
291
+
292
+ `result` type: `IActionResult` (not part of the request/response payload).
293
+
294
+ **Example**
295
+
296
+ ```js
297
+ const { isError, message, result } = await star.missions.deactivateMission({
298
+ id: '<id>',
299
+ version: 1
300
+ });
301
+ if (isError) throw new Error(message);
302
+ console.log(result);
303
+ ```
304
+
305
+ Example response:
306
+
307
+ ```json
308
+ {
309
+ "isError": false,
310
+ "message": "",
311
+ "result": null
312
+ }
313
+ ```
314
+
315
+ ---
316
+
317
+ ### `deleteMission`
318
+
319
+ Deletes a mission by its unique identifier.
320
+
321
+ **DELETE** `api/missions/{id}`
322
+
323
+ Route parameters:
324
+
325
+ | Field | Type |
326
+ | --- | --- |
327
+ | `id` | `Guid` |
328
+
329
+ **Request**
330
+
331
+ No request body.
332
+
333
+ **Response**
334
+
335
+ Standard `OASISResult` envelope (see top of this page) with:
336
+
337
+ `result` type: `IActionResult` (not part of the request/response payload).
338
+
339
+ **Example**
340
+
341
+ ```js
342
+ const { isError, message, result } = await star.missions.deleteMission({
343
+ id: '<id>'
344
+ });
345
+ if (isError) throw new Error(message);
346
+ console.log(result);
347
+ ```
348
+
349
+ Example response:
350
+
351
+ ```json
352
+ {
353
+ "isError": false,
354
+ "message": "",
355
+ "result": null
356
+ }
357
+ ```
358
+
359
+ ---
360
+
361
+ ### `downloadMission`
362
+
363
+ Downloads a mission from the STARNET system.
364
+
365
+ **POST** `api/missions/{id}/download`
366
+
367
+ Route parameters:
368
+
369
+ | Field | Type |
370
+ | --- | --- |
371
+ | `id` | `Guid` |
372
+
373
+ **Request**
374
+
375
+ Body fields:
376
+
377
+ | Field | Type |
378
+ | --- | --- |
379
+ | `version` | `int (optional)` |
380
+ | `downloadPath` | `string (optional)` |
381
+ | `reInstall` | `bool (optional)` |
382
+
383
+ **Response**
384
+
385
+ Standard `OASISResult` envelope (see top of this page) with:
386
+
387
+ `result` type: `IActionResult` (not part of the request/response payload).
388
+
389
+ **Example**
390
+
391
+ ```js
392
+ const { isError, message, result } = await star.missions.downloadMission({
393
+ id: '<id>',
394
+ version: 1,
395
+ downloadPath: 'example string',
396
+ reInstall: true
397
+ });
398
+ if (isError) throw new Error(message);
399
+ console.log(result);
400
+ ```
401
+
402
+ Example response:
403
+
404
+ ```json
405
+ {
406
+ "isError": false,
407
+ "message": "",
408
+ "result": null
409
+ }
410
+ ```
411
+
412
+ ---
413
+
414
+ ### `editMission`
415
+
416
+ Edits a mission with new DNA configuration.
417
+
418
+ **POST** `api/missions/{id}/edit`
419
+
420
+ Route parameters:
421
+
422
+ | Field | Type |
423
+ | --- | --- |
424
+ | `id` | `Guid` |
425
+
426
+ **Request**
427
+
428
+ Body type: `EditMissionRequest`
429
+
430
+ | Field | Type |
431
+ | --- | --- |
432
+ | `NewDNA` | `STARNETDNA` |
433
+
434
+ **Response**
435
+
436
+ Standard `OASISResult` envelope (see top of this page) with:
437
+
438
+ `result` type: `IActionResult` (not part of the request/response payload).
439
+
440
+ **Example**
441
+
442
+ ```js
443
+ const { isError, message, result } = await star.missions.editMission({
444
+ id: '<id>',
445
+ newDNA: { "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "Name": "example string", "Description": "example string", "STARNETHolonType": "example string", "STARNETCategory": {}, "STARNETSubCategory": {}, "Dependencies": { "OAPPs": [{ "Type": { }, "HolonId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "STARNETHolonId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "Name": "example string", "Description": "example string", "Version": "example string", "VersionSequence": 1, "Install": true, "InstallMode": { }, "InstalledFrom": "example string", "InstalledTo": "example string" }], "Runtimes": [], "Libraries": [], "Templates": [], "NFTs": [], "NFTCollections": [], "GeoNFTs": [], "GeoNFTCollections": [], "GeoHotSpots": [], "Quests": [], "Missions": [], "Chapters": [], "InventoryItems": [], "CelestialSpaces": [], "CelestialBodies": [], "Zomes": [], "Holons": [], "CelestialBodiesMetaDataDNA": [], "ZomesMetaDataDNA": [], "HolonsMetaDataDNA": [] }, "MetaData": { "<string>": {} }, "MetaHolonTagMappings": /* <>> */, "MetaTagMappings": { "<string>": "example string" }, "CreatedByAvatarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "CreatedByAvatarUsername": "example string", "CreatedOn": "2026-01-01T00:00:00Z", "SourcePath": "example string", "PublishedPath": "example string", "PublishedByAvatarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "PublishedByAvatarUsername": "example string", "PublishedOn": "2026-01-01T00:00:00Z", "LaunchTarget": "example string", "ModifiedByAvatarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "ModifiedByAvatarUsername": "example string", "ModifiedOn": "2026-01-01T00:00:00Z", "PublishedOnSTARNET": true, "PublishedToCloud": true, "PublishedToPinata": true, "PinataIPFSHash": "example string", "PublishedProviderType": "example string", "FileSize": 1, "Version": "example string", "OASISRuntimeVersion": "example string", "OASISAPIVersion": "example string", "COSMICVersion": "example string", "STARRuntimeVersion": "example string", "STARODKVersion": "example string", "STARAPIVersion": "example string", "STARNETVersion": "example string", "DotNetVersion": "example string", "VersionSequence": 1, "Downloads": 1, "Installs": 1, "TotalDownloads": 1, "TotalInstalls": 1, "NumberOfVersions": 1 }
446
+ });
447
+ if (isError) throw new Error(message);
448
+ console.log(result);
449
+ ```
450
+
451
+ Example response:
452
+
453
+ ```json
454
+ {
455
+ "isError": false,
456
+ "message": "",
457
+ "result": null
458
+ }
459
+ ```
460
+
461
+ ---
462
+
463
+ ### `getAllMissions`
464
+
465
+ Retrieves all missions in the system.
466
+
467
+ **GET** `api/missions`
468
+
469
+ **Request**
470
+
471
+ No request body.
472
+
473
+ **Response**
474
+
475
+ Standard `OASISResult` envelope (see top of this page) with:
476
+
477
+ `result` type: `IActionResult` (not part of the request/response payload).
478
+
479
+ **Example**
480
+
481
+ ```js
482
+ const { isError, message, result } = await star.missions.getAllMissions({});
483
+ if (isError) throw new Error(message);
484
+ console.log(result);
485
+ ```
486
+
487
+ Example response:
488
+
489
+ ```json
490
+ {
491
+ "isError": false,
492
+ "message": "",
493
+ "result": null
494
+ }
495
+ ```
496
+
497
+ ---
498
+
499
+ ### `getMission`
500
+
501
+ Retrieves a specific mission by its unique identifier.
502
+
503
+ **GET** `api/missions/{id}`
504
+
505
+ Route parameters:
506
+
507
+ | Field | Type |
508
+ | --- | --- |
509
+ | `id` | `Guid` |
510
+
511
+ **Request**
512
+
513
+ No request body.
514
+
515
+ **Response**
516
+
517
+ Standard `OASISResult` envelope (see top of this page) with:
518
+
519
+ `result` type: `IActionResult` (not part of the request/response payload).
520
+
521
+ **Example**
522
+
523
+ ```js
524
+ const { isError, message, result } = await star.missions.getMission({
525
+ id: '<id>'
526
+ });
527
+ if (isError) throw new Error(message);
528
+ console.log(result);
529
+ ```
530
+
531
+ Example response:
532
+
533
+ ```json
534
+ {
535
+ "isError": false,
536
+ "message": "",
537
+ "result": null
538
+ }
539
+ ```
540
+
541
+ ---
542
+
543
+ ### `getMissionLeaderboard`
544
+
545
+ Gets mission leaderboard for a specific mission.
546
+
547
+ **GET** `api/missions/{id}/leaderboard`
548
+
549
+ Route parameters:
550
+
551
+ | Field | Type |
552
+ | --- | --- |
553
+ | `id` | `Guid` |
554
+
555
+ **Request**
556
+
557
+ Query parameters:
558
+
559
+ | Field | Type |
560
+ | --- | --- |
561
+ | `limit` | `int (optional)` |
562
+
563
+ **Response**
564
+
565
+ Standard `OASISResult` envelope (see top of this page) with:
566
+
567
+ `result` type: `IActionResult` (not part of the request/response payload).
568
+
569
+ **Example**
570
+
571
+ ```js
572
+ const { isError, message, result } = await star.missions.getMissionLeaderboard({
573
+ id: '<id>',
574
+ limit: 1
575
+ });
576
+ if (isError) throw new Error(message);
577
+ console.log(result);
578
+ ```
579
+
580
+ Example response:
581
+
582
+ ```json
583
+ {
584
+ "isError": false,
585
+ "message": "",
586
+ "result": null
587
+ }
588
+ ```
589
+
590
+ ---
591
+
592
+ ### `getMissionRewards`
593
+
594
+ Gets mission rewards for a specific mission.
595
+
596
+ **GET** `api/missions/{id}/rewards`
597
+
598
+ Route parameters:
599
+
600
+ | Field | Type |
601
+ | --- | --- |
602
+ | `id` | `Guid` |
603
+
604
+ **Request**
605
+
606
+ No request body.
607
+
608
+ **Response**
609
+
610
+ Standard `OASISResult` envelope (see top of this page) with:
611
+
612
+ `result` type: `IActionResult` (not part of the request/response payload).
613
+
614
+ **Example**
615
+
616
+ ```js
617
+ const { isError, message, result } = await star.missions.getMissionRewards({
618
+ id: '<id>'
619
+ });
620
+ if (isError) throw new Error(message);
621
+ console.log(result);
622
+ ```
623
+
624
+ Example response:
625
+
626
+ ```json
627
+ {
628
+ "isError": false,
629
+ "message": "",
630
+ "result": null
631
+ }
632
+ ```
633
+
634
+ ---
635
+
636
+ ### `getMissionStats`
637
+
638
+ Gets mission statistics for the authenticated avatar.
639
+
640
+ **GET** `api/missions/stats`
641
+
642
+ **Request**
643
+
644
+ No request body.
645
+
646
+ **Response**
647
+
648
+ Standard `OASISResult` envelope (see top of this page) with:
649
+
650
+ `result` type: `IActionResult` (not part of the request/response payload).
651
+
652
+ **Example**
653
+
654
+ ```js
655
+ const { isError, message, result } = await star.missions.getMissionStats({});
656
+ if (isError) throw new Error(message);
657
+ console.log(result);
658
+ ```
659
+
660
+ Example response:
661
+
662
+ ```json
663
+ {
664
+ "isError": false,
665
+ "message": "",
666
+ "result": null
667
+ }
668
+ ```
669
+
670
+ ---
671
+
672
+ ### `getMissionVersions`
673
+
674
+ Gets all versions of a specific mission.
675
+
676
+ **GET** `api/missions/{id}/versions`
677
+
678
+ Route parameters:
679
+
680
+ | Field | Type |
681
+ | --- | --- |
682
+ | `id` | `Guid` |
683
+
684
+ **Request**
685
+
686
+ No request body.
687
+
688
+ **Response**
689
+
690
+ Standard `OASISResult` envelope (see top of this page) with:
691
+
692
+ `result` type: `IActionResult` (not part of the request/response payload).
693
+
694
+ **Example**
695
+
696
+ ```js
697
+ const { isError, message, result } = await star.missions.getMissionVersions({
698
+ id: '<id>'
699
+ });
700
+ if (isError) throw new Error(message);
701
+ console.log(result);
702
+ ```
703
+
704
+ Example response:
705
+
706
+ ```json
707
+ {
708
+ "isError": false,
709
+ "message": "",
710
+ "result": null
711
+ }
712
+ ```
713
+
714
+ ---
715
+
716
+ ### `getMissionsByStatus`
717
+
718
+ Retrieves missions by status.
719
+
720
+ **GET** `api/missions/by-status/{status}`
721
+
722
+ Route parameters:
723
+
724
+ | Field | Type |
725
+ | --- | --- |
726
+ | `status` | `string` |
727
+
728
+ **Request**
729
+
730
+ No request body.
731
+
732
+ **Response**
733
+
734
+ Standard `OASISResult` envelope (see top of this page) with:
735
+
736
+ `result` type: `IActionResult` (not part of the request/response payload).
737
+
738
+ **Example**
739
+
740
+ ```js
741
+ const { isError, message, result } = await star.missions.getMissionsByStatus({
742
+ status: '<status>'
743
+ });
744
+ if (isError) throw new Error(message);
745
+ console.log(result);
746
+ ```
747
+
748
+ Example response:
749
+
750
+ ```json
751
+ {
752
+ "isError": false,
753
+ "message": "",
754
+ "result": null
755
+ }
756
+ ```
757
+
758
+ ---
759
+
760
+ ### `getMissionsByType`
761
+
762
+ Retrieves missions by a specific type.
763
+
764
+ **GET** `api/missions/by-type/{type}`
765
+
766
+ Route parameters:
767
+
768
+ | Field | Type |
769
+ | --- | --- |
770
+ | `type` | `string` |
771
+
772
+ **Request**
773
+
774
+ No request body.
775
+
776
+ **Response**
777
+
778
+ Standard `OASISResult` envelope (see top of this page) with:
779
+
780
+ `result` type: `IActionResult` (not part of the request/response payload).
781
+
782
+ **Example**
783
+
784
+ ```js
785
+ const { isError, message, result } = await star.missions.getMissionsByType({
786
+ type: '<type>'
787
+ });
788
+ if (isError) throw new Error(message);
789
+ console.log(result);
790
+ ```
791
+
792
+ Example response:
793
+
794
+ ```json
795
+ {
796
+ "isError": false,
797
+ "message": "",
798
+ "result": null
799
+ }
800
+ ```
801
+
802
+ ---
803
+
804
+ ### `loadAllMissionsForAvatar`
805
+
806
+ Loads all missions for the authenticated avatar.
807
+
808
+ **GET** `api/missions/load-all-for-avatar`
809
+
810
+ **Request**
811
+
812
+ Query parameters:
813
+
814
+ | Field | Type |
815
+ | --- | --- |
816
+ | `showAllVersions` | `bool (optional)` |
817
+ | `version` | `int (optional)` |
818
+
819
+ **Response**
820
+
821
+ Standard `OASISResult` envelope (see top of this page) with:
822
+
823
+ `result` type: `IActionResult` (not part of the request/response payload).
824
+
825
+ **Example**
826
+
827
+ ```js
828
+ const { isError, message, result } = await star.missions.loadAllMissionsForAvatar({
829
+ showAllVersions: true,
830
+ version: 1
831
+ });
832
+ if (isError) throw new Error(message);
833
+ console.log(result);
834
+ ```
835
+
836
+ Example response:
837
+
838
+ ```json
839
+ {
840
+ "isError": false,
841
+ "message": "",
842
+ "result": null
843
+ }
844
+ ```
845
+
846
+ ---
847
+
848
+ ### `loadMission`
849
+
850
+ Loads a mission by ID with optional version and holon type.
851
+
852
+ **GET** `api/missions/{id}/load`
853
+
854
+ Route parameters:
855
+
856
+ | Field | Type |
857
+ | --- | --- |
858
+ | `id` | `Guid` |
859
+
860
+ **Request**
861
+
862
+ Query parameters:
863
+
864
+ | Field | Type |
865
+ | --- | --- |
866
+ | `version` | `int (optional)` |
867
+ | `holonType` | `string (optional)` |
868
+
869
+ **Response**
870
+
871
+ Standard `OASISResult` envelope (see top of this page) with:
872
+
873
+ `result` type: `IActionResult` (not part of the request/response payload).
874
+
875
+ **Example**
876
+
877
+ ```js
878
+ const { isError, message, result } = await star.missions.loadMission({
879
+ id: '<id>',
880
+ version: 1,
881
+ holonType: 'example string'
882
+ });
883
+ if (isError) throw new Error(message);
884
+ console.log(result);
885
+ ```
886
+
887
+ Example response:
888
+
889
+ ```json
890
+ {
891
+ "isError": false,
892
+ "message": "",
893
+ "result": null
894
+ }
895
+ ```
896
+
897
+ ---
898
+
899
+ ### `loadMissionFromPath`
900
+
901
+ Loads a mission from source or installed folder path.
902
+
903
+ **GET** `api/missions/load-from-path`
904
+
905
+ **Request**
906
+
907
+ Query parameters:
908
+
909
+ | Field | Type |
910
+ | --- | --- |
911
+ | `path` | `string` |
912
+ | `holonType` | `string (optional)` |
913
+
914
+ **Response**
915
+
916
+ Standard `OASISResult` envelope (see top of this page) with:
917
+
918
+ `result` type: `IActionResult` (not part of the request/response payload).
919
+
920
+ **Example**
921
+
922
+ ```js
923
+ const { isError, message, result } = await star.missions.loadMissionFromPath({
924
+ path: 'example string',
925
+ holonType: 'example string'
926
+ });
927
+ if (isError) throw new Error(message);
928
+ console.log(result);
929
+ ```
930
+
931
+ Example response:
932
+
933
+ ```json
934
+ {
935
+ "isError": false,
936
+ "message": "",
937
+ "result": null
938
+ }
939
+ ```
940
+
941
+ ---
942
+
943
+ ### `loadMissionFromPublished`
944
+
945
+ Loads a mission from a published file.
946
+
947
+ **GET** `api/missions/load-from-published`
948
+
949
+ **Request**
950
+
951
+ Query parameters:
952
+
953
+ | Field | Type |
954
+ | --- | --- |
955
+ | `publishedFilePath` | `string` |
956
+
957
+ **Response**
958
+
959
+ Standard `OASISResult` envelope (see top of this page) with:
960
+
961
+ `result` type: `IActionResult` (not part of the request/response payload).
962
+
963
+ **Example**
964
+
965
+ ```js
966
+ const { isError, message, result } = await star.missions.loadMissionFromPublished({
967
+ publishedFilePath: 'example string'
968
+ });
969
+ if (isError) throw new Error(message);
970
+ console.log(result);
971
+ ```
972
+
973
+ Example response:
974
+
975
+ ```json
976
+ {
977
+ "isError": false,
978
+ "message": "",
979
+ "result": null
980
+ }
981
+ ```
982
+
983
+ ---
984
+
985
+ ### `loadMissionVersion`
986
+
987
+ Loads a specific version of a mission.
988
+
989
+ **GET** `api/missions/{id}/version/{version}`
990
+
991
+ Route parameters:
992
+
993
+ | Field | Type |
994
+ | --- | --- |
995
+ | `id` | `Guid` |
996
+ | `version` | `string` |
997
+
998
+ **Request**
999
+
1000
+ No request body.
1001
+
1002
+ **Response**
1003
+
1004
+ Standard `OASISResult` envelope (see top of this page) with:
1005
+
1006
+ `result` type: `IActionResult` (not part of the request/response payload).
1007
+
1008
+ **Example**
1009
+
1010
+ ```js
1011
+ const { isError, message, result } = await star.missions.loadMissionVersion({
1012
+ id: '<id>',
1013
+ version: '<version>'
1014
+ });
1015
+ if (isError) throw new Error(message);
1016
+ console.log(result);
1017
+ ```
1018
+
1019
+ Example response:
1020
+
1021
+ ```json
1022
+ {
1023
+ "isError": false,
1024
+ "message": "",
1025
+ "result": null
1026
+ }
1027
+ ```
1028
+
1029
+ ---
1030
+
1031
+ ### `publishMission`
1032
+
1033
+ Publishes a mission to the STARNET system.
1034
+
1035
+ **POST** `api/missions/{id}/publish`
1036
+
1037
+ Route parameters:
1038
+
1039
+ | Field | Type |
1040
+ | --- | --- |
1041
+ | `id` | `Guid` |
1042
+
1043
+ **Request**
1044
+
1045
+ Body type: `PublishRequest`
1046
+
1047
+ | Field | Type |
1048
+ | --- | --- |
1049
+ | `SourcePath` | `string` |
1050
+ | `LaunchTarget` | `string` |
1051
+ | `PublishPath` | `string` |
1052
+ | `Edit` | `bool` |
1053
+ | `RegisterOnSTARNET` | `bool` |
1054
+ | `GenerateBinary` | `bool` |
1055
+ | `UploadToCloud` | `bool` |
1056
+
1057
+ **Response**
1058
+
1059
+ Standard `OASISResult` envelope (see top of this page) with:
1060
+
1061
+ `result` type: `IActionResult` (not part of the request/response payload).
1062
+
1063
+ **Example**
1064
+
1065
+ ```js
1066
+ const { isError, message, result } = await star.missions.publishMission({
1067
+ id: '<id>',
1068
+ sourcePath: "example string",
1069
+ launchTarget: "example string",
1070
+ publishPath: "example string",
1071
+ edit: true,
1072
+ registerOnSTARNET: true,
1073
+ generateBinary: true,
1074
+ uploadToCloud: true
1075
+ });
1076
+ if (isError) throw new Error(message);
1077
+ console.log(result);
1078
+ ```
1079
+
1080
+ Example response:
1081
+
1082
+ ```json
1083
+ {
1084
+ "isError": false,
1085
+ "message": "",
1086
+ "result": null
1087
+ }
1088
+ ```
1089
+
1090
+ ---
1091
+
1092
+ ### `republishMission`
1093
+
1094
+ Republishes a mission to the STARNET system.
1095
+
1096
+ **POST** `api/missions/{id}/republish`
1097
+
1098
+ Route parameters:
1099
+
1100
+ | Field | Type |
1101
+ | --- | --- |
1102
+ | `id` | `Guid` |
1103
+
1104
+ **Request**
1105
+
1106
+ Body fields:
1107
+
1108
+ | Field | Type |
1109
+ | --- | --- |
1110
+ | `version` | `int (optional)` |
1111
+
1112
+ **Response**
1113
+
1114
+ Standard `OASISResult` envelope (see top of this page) with:
1115
+
1116
+ `result` type: `IActionResult` (not part of the request/response payload).
1117
+
1118
+ **Example**
1119
+
1120
+ ```js
1121
+ const { isError, message, result } = await star.missions.republishMission({
1122
+ id: '<id>',
1123
+ version: 1
1124
+ });
1125
+ if (isError) throw new Error(message);
1126
+ console.log(result);
1127
+ ```
1128
+
1129
+ Example response:
1130
+
1131
+ ```json
1132
+ {
1133
+ "isError": false,
1134
+ "message": "",
1135
+ "result": null
1136
+ }
1137
+ ```
1138
+
1139
+ ---
1140
+
1141
+ ### `searchMissions`
1142
+
1143
+ Searches missions by name or description.
1144
+
1145
+ **GET** `api/missions/search`
1146
+
1147
+ **Request**
1148
+
1149
+ Query parameters:
1150
+
1151
+ | Field | Type |
1152
+ | --- | --- |
1153
+ | `query` | `string` |
1154
+
1155
+ **Response**
1156
+
1157
+ Standard `OASISResult` envelope (see top of this page) with:
1158
+
1159
+ `result` type: `IActionResult` (not part of the request/response payload).
1160
+
1161
+ **Example**
1162
+
1163
+ ```js
1164
+ const { isError, message, result } = await star.missions.searchMissions({
1165
+ query: 'example string'
1166
+ });
1167
+ if (isError) throw new Error(message);
1168
+ console.log(result);
1169
+ ```
1170
+
1171
+ Example response:
1172
+
1173
+ ```json
1174
+ {
1175
+ "isError": false,
1176
+ "message": "",
1177
+ "result": null
1178
+ }
1179
+ ```
1180
+
1181
+ ---
1182
+
1183
+ ### `unpublishMission`
1184
+
1185
+ Unpublishes a mission from the STARNET system.
1186
+
1187
+ **POST** `api/missions/{id}/unpublish`
1188
+
1189
+ Route parameters:
1190
+
1191
+ | Field | Type |
1192
+ | --- | --- |
1193
+ | `id` | `Guid` |
1194
+
1195
+ **Request**
1196
+
1197
+ Body fields:
1198
+
1199
+ | Field | Type |
1200
+ | --- | --- |
1201
+ | `version` | `int (optional)` |
1202
+
1203
+ **Response**
1204
+
1205
+ Standard `OASISResult` envelope (see top of this page) with:
1206
+
1207
+ `result` type: `IActionResult` (not part of the request/response payload).
1208
+
1209
+ **Example**
1210
+
1211
+ ```js
1212
+ const { isError, message, result } = await star.missions.unpublishMission({
1213
+ id: '<id>',
1214
+ version: 1
1215
+ });
1216
+ if (isError) throw new Error(message);
1217
+ console.log(result);
1218
+ ```
1219
+
1220
+ Example response:
1221
+
1222
+ ```json
1223
+ {
1224
+ "isError": false,
1225
+ "message": "",
1226
+ "result": null
1227
+ }
1228
+ ```
1229
+
1230
+ ---
1231
+
1232
+ ### `updateMission`
1233
+
1234
+ Updates an existing mission by its unique identifier.
1235
+
1236
+ **PUT** `api/missions/{id}`
1237
+
1238
+ Route parameters:
1239
+
1240
+ | Field | Type |
1241
+ | --- | --- |
1242
+ | `id` | `Guid` |
1243
+
1244
+ **Request**
1245
+
1246
+ Body type: `IMission`
1247
+
1248
+ | Field | Type |
1249
+ | --- | --- |
1250
+ | `PublishedOn` | `DateTime` |
1251
+ | `PublishedByAvatarId` | `Guid` |
1252
+ | `PublishedByAvatar` | `IAvatar` |
1253
+ | `Quests` | `IList<IQuest>` |
1254
+ | `Chapters` | `IList<IChapter>` |
1255
+
1256
+ **Response**
1257
+
1258
+ Standard `OASISResult` envelope (see top of this page) with:
1259
+
1260
+ `result` type: `IActionResult` (not part of the request/response payload).
1261
+
1262
+ **Example**
1263
+
1264
+ ```js
1265
+ const { isError, message, result } = await star.missions.updateMission({
1266
+ id: '<id>',
1267
+ publishedOn: "2026-01-01T00:00:00Z",
1268
+ publishedByAvatarId: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
1269
+ publishedByAvatar: { "ProviderWallets": { "<ProviderType>": [{ "AvatarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "WalletId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "Name": "example string", "Description": /* <new string> */, "PrivateKey": "example string", "PublicKey": "example string", "WalletAddress": "example string", "WalletAddressSegwitP2SH": "example string", "SecretRecoveryPhrase": "example string", "Transactions": [{ "TransactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "FromWalletAddress": "example string", "ToWalletAddress": "example string", "Amount": 1.0, "Description": "example string", "CreatedDate": "2026-01-01T00:00:00Z", "TransactionType": { }, "TransactionCategory": { } }], "ProviderType": { }, "Balance": 1.0, "IsDefaultWallet": true }] }, "ProviderPrivateKey": { "<ProviderType>": "example string" }, "ProviderPublicKey": { "<ProviderType>": ["example string"] }, "ProviderUsername": { "<ProviderType>": "example string" }, "ProviderWalletAddress": { "<ProviderType>": ["example string"] }, "AvatarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "Title": "example string", "FirstName": "example string", "LastName": "example string", "FullName": "example string", "FullNameWithTitle": "example string", "Username": "example string", "Email": "example string", "Password": "example string", "AvatarType": { "Score": 1.0 }, "AcceptTerms": true, "IsVerified": true, "JwtToken": "example string", "PasswordReset": "2026-01-01T00:00:00Z", "RefreshToken": "example string", "RefreshTokens": [{ "Id": 1, "Avatar": {}, "Token": "example string", "Expires": "2026-01-01T00:00:00Z", "Created": "2026-01-01T00:00:00Z", "CreatedByIp": "example string", "Revoked": "2026-01-01T00:00:00Z", "RevokedByIp": "example string", "ReplacedByToken": "example string" }], "ResetToken": "example string", "ResetTokenExpires": "2026-01-01T00:00:00Z", "VerificationToken": "example string", "Verified": "2026-01-01T00:00:00Z", "LastBeamedIn": "2026-01-01T00:00:00Z", "LastBeamedOut": "2026-01-01T00:00:00Z", "IsBeamedIn": true, "Image2D": "example string", "Karma": 1, "Level": 1, "XP": 1 },
1270
+ quests: [{ "ParentMissionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "ParentQuestId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "QuestType": { }, "GeoSpatialNFTIds": ["example string"], "GeoSpatialNFTs": [ /* <IOASISGeoSpatialNFT> */ ], "GeoHotSpotIds": ["example string"], "GeoHotSpots": [{ "TriggerType": { }, "Lat": 1.0, "Long": 1.0, "HotSpotRadiusInMetres": 1, "TimeInSecondsNeedToBeAtLocationToTriggerHotSpot": 1, "TimeInSecondsNeedToLookAt3DObjectOr2DImageToTriggerHotSpot": 1, "Object3D": "<base64-bytes>", "Image2D": "<base64-bytes>", "Rewards": [{ "Image2D": "<base64-bytes>", "Image2DURI": "https://example.com/asset.png", "ThumbnailUrl": "example string", "Object3D": "<base64-bytes>", "Object3DURI": "https://example.com/asset.png", "Quantity": 1, "Stack": true, "IsStackable": true, "GameSource": "example string", "ItemType": "example string", "NftId": "example string", "Rarity": "example string", "MaxQuantity": 1, "Weight": 1.0, "IsUsable": true, "IsTradeable": true, "OwnerAvatarId": "example string", "AcquiredOn": "2026-01-01T00:00:00Z", "LastUsedOn": "2026-01-01T00:00:00Z", "Properties": { "<string>": {} } }], "AudioData": "<base64-bytes>", "AudioUrl": "example string", "VideoData": "<base64-bytes>", "VideoUrl": "example string", "TextContent": "example string", "WebsiteUrl": "example string" }], "CurrentSubQuest": {}, "CurrentSubQuestNumber": 1 }],
1271
+ chapters: [{ "ChapterDisplayName": "example string" }]
1272
+ });
1273
+ if (isError) throw new Error(message);
1274
+ console.log(result);
1275
+ ```
1276
+
1277
+ Example response:
1278
+
1279
+ ```json
1280
+ {
1281
+ "isError": false,
1282
+ "message": "",
1283
+ "result": null
1284
+ }
1285
+ ```
1286
+