Dokumentation til udviklere
SuperAwesomes API
Byg videre på Minecraft-fællesskabet. Find spillere og servere, forbind din serverbutik, eller integrér Login med SuperAwesome.
42 dokumenterede endpoints · 19 uden API-nøgle
curl --request GET 'https://api.superawesome.dk/information' \
--header 'Accept: application/json'Brug HTTPS. Forespørgslen om netværket kræver ingen API-nøgle.
API-adresse
https://api.superawesome.dkSvaret er normalt JSON. Se hvert endpoint for undtagelser og tidsformater.
Adgang og API-nøgler
Offentlige opslag kræver ingen nøgle. Butiksplugins sender serverens API-nøgle som hele Authorization-værdien. OAuth bruger Bearer-tokens med spillerens scopes; tokenudveksling bruger appens client ID og secret.
Gem nøgler og client secret på backend. Følg OAuth-guiden for spillervalg og samtykke.
Svar og fejl
Kontroller både HTTP-status og svarets indhold. Nogle ældre fejl bruger 200. Bevar priser som decimaltal i tekstformat, og respekter spillernes privatlivsindstillinger.
Eksemplerne bruger opdigtede spiller- og ordredata.
API-reference
42 endpoints
Spillere/players
Find spillere, offentlige profiler, teammedlemmer og ranglister.
GET/playersSpillerliste
Offentlig
/playersSpillerliste
Den nuværende spillerliste er endnu ikke udfyldt og returnerer altid en tom liste. Brug søgning eller et direkte opslag for at finde en spiller.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Ruten understøtter ikke sideinddeling eller filtrering.
- Spillerruter returnerer Cache-Control: no-store.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/players' \
--header 'Accept: application/json'Eksempel på svar
En tom liste; dette endpoint tilbyder endnu ikke en oversigt over spillere.
[]GET/players/staffTeammedlemmer
Offentlig
/players/staffTeammedlemmer
Hent brugernavn, UUID, rolle og synlig onlinestatus for teamets Minecraft-konti.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Omfatter rollerne admin, seniormod, developer, mod, support og bygger. CONSOLE er udeladt.
- Skjult onlinestatus vises som offline. Cache-Control: no-store.
- Ruten har ingen særskilt statuskode for en mislykket databaselæsning; svaret kan være null.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/players/staff' \
--header 'Accept: application/json'Eksempel på svar
En liste over teammedlemmer.
[
{
"username": "ExampleStaff",
"uuid": "22222222-2222-4222-8222-222222222222",
"role": "support",
"status": "offline"
}
]GET/players/searchSøg efter spillere
Offentlig
/players/searchSøg efter spillere
Søg efter brugernavne eller slå et UUID op. Svaret indeholder op til otte spillere med deres rolle og synlige onlinestatus.
Direkte linkParametre
queryURL-parameter · stringvalgfriSøgetekst. Indledende og afsluttende blanktegn fjernes; længden skal derefter være 2–36 tegn. En ugyldig eller manglende query returnerer en tom liste.
Værd at vide
- Brugernavne matches på en del af navnet; UUID'er skal matche præcist. Et præcist brugernavnsmatch vises først, derefter sorteres efter status og brugernavn.
- Søgeteksten bruger LIKE-matching: % og _ fungerer som jokertegn.
- Skjult onlinestatus vises som status: offline og currentServer: null. Cache-Control: no-store.
- Et tomt resultat giver ikke 404 og kan også forekomme, hvis en databaselæsning mislykkes.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/players/search?query=Example' \
--header 'Accept: application/json'Eksempel på svar
Op til otte resultater. En manglende, for kort eller for lang query returnerer [].
[
{
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"status": "online",
"currentServer": "Example-SMP"
}
]GET/players/leaderboardsSpillerranglister
Offentlig
/players/leaderboardsSpillerranglister
Hent ranglister for spilletid, spillerpoint, lobbypoint og vurderinger samt spilletid over de seneste 30, 90, 180 og 365 dage.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- value måles i sekunder for playtime, point for playerPoints/lobbyPoints og en vægtet score for ratings. rank starter ved 1.
- Alle perioder returneres under playtimePeriods; ruten accepterer ikke parametrene period eller limit.
- Spilletiden fra en enkelt session begrænses til syv dage. Kun en gyldig, aktuel og åben session kan fortsætte med at optjene spilletid.
- Totaler opdateres normalt hvert 300. sekund. Under en opdatering eller en midlertidig fejl kan svaret være op til 900 sekunder gammelt; tjek updatedAt.
- Skjulte spillere udelades ved hver forespørgsel, også når ranglistens totaler hentes fra cache. HTTP-svaret bruger Cache-Control: no-store.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/players/leaderboards' \
--header 'Accept: application/json'Eksempel på svar
Alle ranglister i et samlet svar med op til 100 spillere på hver rangliste.
{
"updatedAt": "2026-10-01T10:00:00.000Z",
"refreshIntervalSeconds": 300,
"leaderboards": {
"playtime": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 7200
}
],
"playerPoints": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 20
}
],
"lobbyPoints": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 5
}
],
"ratings": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 4,
"ratings": {
"positive": 4,
"negative": 0,
"neutral": 0,
"total": 4
}
}
]
},
"playtimePeriods": {
"30": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 7200
}
],
"90": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 7200
}
],
"180": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 7200
}
],
"365": [
{
"rank": 1,
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"value": 7200
}
]
}
}GET/players/{lookup}/profileSpillerprofil
Offentlig
/players/{lookup}/profileSpillerprofil
Hent en offentlig profil med rang, point, banstatus, spilletid, vurderinger, aktivitet, servere, badges og venner. lookup er et brugernavn eller UUID.
Direkte linkParametre
lookupURL-sti · stringpåkrævetBrugernavn eller UUID. Indledende og afsluttende blanktegn fjernes; en tom værdi eller mere end 64 tegn afvises. Der kræves ikke et bestemt UUID-format.
Værd at vide
- activity indeholder antal sessioner og spilletid pr. dag fra starten af dagen for 182 dage siden. favoriteServers og recentSessions indeholder hver op til otte resultater.
- Spilletid måles i sekunder, og hver session begrænses til syv dage. Den aktuelle loginStreak beregnes ud fra datoerne for i dag og i går i tidszonen Europe/Copenhagen.
- Når aktivitet er skjult, er activityVisible false og status offline, mens felterne for aktuel server og seneste aktivitet er null. Spilletid, votes og loginStreak nulstilles i svaret; aktivitet, favoritservere, seneste sessioner og boosts er tomme.
- Badges og venner kan stadig vises, men deres aktivitetsdatoer er null, når profilen skjuler aktivitet. Vennernes onlinestatus følger også deres egne valg om synlighed.
- favoriteServers indeholder name, status, category, version, motdFavicon, sessions, playtimeSeconds og lastSeen. recentSessions indeholder name, type, joinedAt, leftAt og playtimeSeconds.
- ownedServers indeholder name, status, category, version, created, descriptionLong, motdFavicon, players og maxPlayers. badges indeholder name, description, color, symbol, active og created.
- serverBoosts indeholder name og since. friends indeholder username, uuid, role, friendsSince, status og currentServer.
- cached er false; cachedAt er svartidspunktet. Spillerruter bruger Cache-Control: no-store. Profilruten har ikke en ensartet statuskode for databasefejl.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/players/ExamplePlayer/profile' \
--header 'Accept: application/json'Eksempel på svar
En offentlig spillerprofil. Nogle felter kan være null, og aktivitet kan være skjult.
{
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"rankLabel": null,
"rankDisplayName": null,
"rankColor": null,
"vipDays": 0,
"proDays": 0,
"lobbyPoints": 5,
"playerPoints": 20,
"created": "2026-10-01T10:00:00.000Z",
"activityVisible": true,
"lastJoined": "2026-10-01T10:00:00.000Z",
"lastSeen": "2026-10-01T10:00:00.000Z",
"status": "offline",
"currentServer": null,
"banStatus": {
"banned": false,
"global": false,
"lobby": false
},
"playtime": {
"totalSeconds": 0,
"last7DaysSeconds": 0,
"last30DaysSeconds": 0,
"sessions": 0,
"serversPlayed": 0,
"averageSessionSeconds": 0,
"firstSession": null,
"lastSession": null
},
"ratings": {
"score": 0,
"total": 0,
"positive": 0,
"negative": 0,
"neutral": 0
},
"votes": {
"total": 0,
"last30Days": 0
},
"loginStreak": {
"current": 0,
"longest": 0,
"totalDays": 0,
"activeToday": false,
"startedDate": null,
"lastLoginDate": null
},
"activity": [],
"favoriteServers": [],
"recentSessions": [],
"ownedServers": [],
"badges": [],
"serverBoosts": [],
"friends": [],
"cached": false,
"cachedAt": "2026-10-01T10:00:00.000Z"
}GET/players/{lookup}Kort spilleropslag
Offentlig
/players/{lookup}Kort spilleropslag
Slå en spiller op via brugernavn eller UUID. Med type=discord matches lookup i stedet med et Discord-ID, og svaret kan indeholde flere tilknyttede Minecraft-konti.
Direkte linkParametre
lookupURL-sti · stringpåkrævetBrugernavn eller UUID; med type=discord bruges et Discord-ID. Ruten validerer ikke særskilt længden eller UUID-formatet.
typeURL-parameter · stringvalgfriKun den præcise værdi discord aktiverer Discord-opslag. Hvis feltet udelades eller har en anden værdi, bruger lookup brugernavn/UUID.
Værd at vide
- Et opslag uden resultater returnerer HTTP 200 med {"error":"Spilleren blev ikke fundet"}, ikke HTTP 404. En mislykket datalæsning kan også returnere denne fejl.
- Med type=discord er et vellykket svar en liste af spillerobjekter uden cached og cachedAt. Eksempel: /players/123456789012345678?type=discord.
- rates indeholder username, uuid, role, points, type og created for hver spiller, der har givet en vurdering. rate er summen af point. lobbyAccess er en liste over lobbynavne.
- badges indeholder name, color, symbol, active og created; serverBoosts indeholder name og since. servers viser ejede servere med name, status og version.
- Hvis spilleren ikke ejer servere, kan servers indeholde et objekt med null-felter i stedet for en tom liste.
- Skjult onlinestatus vises som offline med null i lastSeen/currentServer. Boosts skjules, og aktivitetsdatoer i badges/vurderinger er null. Cache-Control: no-store.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/players/ExamplePlayer' \
--header 'Accept: application/json'Eksempel på svar
Et spillerobjekt ved et normalt opslag, en liste ved type=discord eller et fejlobjekt, hvis spilleren ikke findes.
{
"username": "ExamplePlayer",
"uuid": "11111111-1111-4111-8111-111111111111",
"role": "default",
"vipDays": 0,
"proDays": 0,
"lastSeen": "2026-10-01T10:00:00.000Z",
"discordID": null,
"lobbyPoints": 5,
"playerPoints": 20,
"status": "offline",
"currentServer": null,
"banned": false,
"lobbyAccess": [],
"rates": [],
"badges": [],
"serverBoosts": [],
"servers": [
{
"name": "Example-SMP",
"status": "offline",
"version": "1.21.4"
}
],
"rate": 0,
"cached": false,
"cachedAt": "2026-10-01T10:00:00.000Z"
}Servere/servers
Udforsk servere, spillerantal, statistik og serverbutikker.
GET/serversFind servere
Offentlig
/serversFind servere
Pagineret serverliste med ejer, synlige online-spillere, MOTD og vurderinger. Sorteres med online-servere først, derefter spillerantal faldende og navn stigende.
Direkte linkParametre
sizeURL-parameter · integervalgfriAntal servere pr. side. Positive heltal over 100 begrænses til 100; ugyldige eller ikke-positive værdier bruger standarden.
Standard: 3
pageURL-parameter · integervalgfriSidenummer fra 1. Begrænses til 10.000; ugyldige værdier bruger standarden.
Standard: 1
queryURL-parameter · stringvalgfriNavnesøgning, trimmet og højst 100 tegn. Udeladt værdi matcher alle navne.
Standard:
categoryURL-parameter · stringvalgfriPræcist kategorinavn, trimmet og højst 100 tegn. Tom værdi viser alle kategorier.
Standard:
statusURL-parameter · "online" | "offline" | "all"valgfriStatusfilter. Andre værdier bruger online.
Standard: online
Værd at vide
- Cache-Control: no-store. X-Has-More er teksten true/false og er eksponeret via CORS; næste side findes kun når den er true.
- vip, pro og whitelist er databaseflags (typisk 0/1). players og maxPlayers er tal; serverPoints og rate normaliseres til tal. rate er summen af +1 for positive og -2 for negative vurderinger.
- descriptionLong, ejerfelter, MOTD-felter og playersData kan være null. playersData er ellers et array med username, uuid, vip og pro; rates er et array med username, uuid, role, points, type og created.
- Antallet af online-spillere og playersData udelader skjulte spillere (vanish) og spillere uden offentlig tilstedeværelse. Et lavt antal betyder derfor ikke nødvendigvis få faktiske spillere.
- query bruges som SQL LIKE-mønster; % og _ kan også fungere som wildcards. Der returneres ikke et samlet antal sider.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/servers?size=20&page=1&query=Eksempel&status=all' \
--header 'Accept: application/json'Eksempel på svar
Array af servere; [] når siden ikke har resultater.
[
{
"name": "EksempelSMP",
"version": "1.21.4",
"descriptionLong": "En hyggelig survival-server.",
"vip": 1,
"pro": 0,
"maxPlayers": 50,
"status": "online",
"serverOwner": "123e4567-e89b-42d3-a456-426614174000",
"serverOwnerName": "EksempelEjer",
"category": "Survival",
"whitelist": 0,
"players": 1,
"playersData": [
{
"username": "EksempelSpiller",
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"vip": 0,
"pro": 0
}
],
"serverPoints": 120,
"rates": [
{
"username": "EksempelSpiller",
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"role": "player",
"points": 1,
"type": "positive",
"created": "2026-10-01T12:00:00.000Z"
}
],
"motdLine1": "§6EksempelSMP",
"motdLine2": "§aVelkommen!",
"motdFavicon": null,
"rate": 1
}
]GET/servers/statsSpillerhistorik for alle servere
Offentlig
/servers/statsSpillerhistorik for alle servere
Målinger pr. minut fra det seneste døgn for servere med statistik og en tilknyttet ejer.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Ingen sti- eller forespørgselsparametre. Et tomt datasæt er []. players kan være [] ved manglende eller ulæselige ældre statistikdata.
- Dette er den ældre samlede statistikform; brug /servers/stats/{serverName} for history, topPlayers og votes i et valgt tidsrum.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/servers/stats' \
--header 'Accept: application/json'Eksempel på svar
Array med serverName, serverOwnerUUID, serverOwner, maxPlayers og players. players knytter Unix-tidsstempler i sekunder til spillerantal.
[
{
"serverName": "EksempelSMP",
"serverOwnerUUID": "123e4567-e89b-42d3-a456-426614174000",
"serverOwner": "EksempelEjer",
"maxPlayers": 50,
"players": {
"1790856000": 3,
"1790856060": 5
}
}
]GET/servers/stats/montly30 dages spillerhistorik for alle servere
Offentlig
/servers/stats/montly30 dages spillerhistorik for alle servere
Daglige playersOnline-målinger fra de seneste 30 dage. Den eksisterende URL staves montly.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Ingen forespørgselsparametre. Servere uden målinger/ejer er ikke med; players kan være [] ved ulæselige data.
- Brug /montly, ikke /monthly. Den faste montly-rute vælges før det dynamiske serverName-segment.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/servers/stats/montly' \
--header 'Accept: application/json'Eksempel på svar
Samme objektform som døgnstatistikken; nøglerne i players er Unix-sekunder for de daglige målinger.
[
{
"serverName": "EksempelSMP",
"serverOwnerUUID": "123e4567-e89b-42d3-a456-426614174000",
"serverOwner": "EksempelEjer",
"maxPlayers": 50,
"players": {
"1790769600": 4,
"1790856000": 6
}
}
]GET/servers/stats/{serverName}Statistik for en server
Offentlig
/servers/stats/{serverName}Statistik for en server
Spillerhistorik, de ti spillere med mest registreret spilletid og antal stemmer i et valgt tidsrum.
Direkte linkParametre
serverNameURL-sti · stringpåkrævetServerens navn som et enkelt URL-kodet stisegment.
rangeURL-parameter · "24h" | "7d" | "30d"valgfri24h bruger minutmålinger; 7d/30d bruger daglige målinger. Udeladt range bruger 30d.
Standard: 30d
Værd at vide
- history er kronologisk stigende. timestamp er Unix-sekunder, ikke millisekunder. Daglige players kan være et gennemsnit med decimaler; minutmålinger bruger samme antal til minPlayers/maxPlayers.
- maxPlayers er serverens eksplicit gemte kapacitet eller 0; dette endpoint bruger ikke VIP/PRO-standardkapaciteten fra serverlisten.
- topPlayers har username, uuid, sessions, playtimeSeconds og lastSeen. Kun sessioner startet inden for intervallet tælles, og hver session begrænses til højst syv dage. lastSeen viser seneste registrerede aktivitet, ikke om spilleren er online nu.
- Cache-Control: public, max-age=60, stale-while-revalidate=240. API-processen kan genbruge samme serversvar for det valgte tidsrum i fem minutter.
- En eksisterende server uden aktivitet returnerer tomme arrays og votes med 0; den samlede stats-router er monteret før /servers/{name}.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/servers/stats/EksempelSMP?range=7d' \
--header 'Accept: application/json'Eksempel på svar
serverName/range er tekststrenge, maxPlayers er et tal, history og topPlayers er arrays, og votes indeholder total og uniqueVoters.
{
"serverName": "EksempelSMP",
"range": "7d",
"maxPlayers": 50,
"history": [
{
"timestamp": 1790856000,
"players": 5.5,
"minPlayers": 1,
"maxPlayers": 10
}
],
"topPlayers": [
{
"username": "EksempelSpiller",
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"sessions": 3,
"playtimeSeconds": 7200,
"lastSeen": "2026-10-01T12:00:00.000Z"
}
],
"votes": {
"total": 12,
"uniqueVoters": 8
}
}GET/servers/{name}Serverprofil
Offentlig
/servers/{name}Serverprofil
En servers offentlige profil med ejer, spillere, vurderinger, boosts, stemmetal og links.
Direkte linkParametre
nameURL-sti · stringpåkrævetServerens navn. URL-kod navnet som et enkelt stisegment.
Værd at vide
- Manglende server returnerer {"error":"Server not found."} med HTTP 200. Cache-Control: no-store.
- Grundfelter og datatyper følger serverlisten. Derudover: created/lastOnline er datostreng|null, websiteURL/discordURL string|null, stemmetal er tal, og serverBoosts er array|null med uuid, username og since.
- dailyVotes bruger database-dagen; weeklyVotes bruger den aktuelle database-uge/år; monthlyVotes er de seneste 30 dage. serverPoints dækker den seneste måned, mens totalVotes dækker alle stemmer.
- Spillerlisten respekterer samme offentlige tilstedeværelse/vanish-filtrering som serverlisten. MOTD kan indeholde Minecraft-formateringskoder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/servers/EksempelSMP' \
--header 'Accept: application/json'Eksempel på svar
Serverobjekt, eller et fejlobjekt med error når navnet ikke findes. Manglende server bruger HTTP 200.
{
"name": "EksempelSMP",
"version": "1.21.4",
"descriptionLong": "En hyggelig survival-server.",
"vip": 1,
"pro": 0,
"maxPlayers": 50,
"status": "online",
"serverOwner": "123e4567-e89b-42d3-a456-426614174000",
"serverOwnerName": "EksempelEjer",
"category": "Survival",
"whitelist": 0,
"players": 1,
"playersData": [
{
"username": "EksempelSpiller",
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"vip": 0,
"pro": 0
}
],
"serverPoints": 120,
"rates": [
{
"username": "EksempelSpiller",
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"role": "player",
"points": 1,
"type": "positive",
"created": "2026-10-01T12:00:00.000Z"
}
],
"motdLine1": "§6EksempelSMP",
"motdLine2": "§aVelkommen!",
"motdFavicon": null,
"rate": 1,
"created": "2026-01-01T12:00:00.000Z",
"lastOnline": "2026-10-01T12:00:00.000Z",
"websiteURL": "https://example.com",
"discordURL": null,
"serverBoosts": [
{
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"username": "EksempelSpiller",
"since": "2026-10-01T12:00:00.000Z"
}
],
"dailyVotes": 2,
"weeklyVotes": 10,
"monthlyVotes": 35,
"totalVotes": 120
}GET/servers/{name}/faviconServerikon
Offentlig
/servers/{name}/faviconServerikon
Streamer serverens MOTD-favicon som PNG eller bruger det konfigurerede standardikon.
Direkte linkParametre
nameURL-sti · stringpåkrævetServerens navn. URL-kod navnet som et enkelt stisegment.
Værd at vide
- Manglende server: {"error":"Server not found."}. Manglende ikon: {"error":"No favicon found."}. Kontroller Content-Type før du fortolker svarindholdet.
- API-processen kan gemme standardikonet i sin cache i fem minutter; det er ikke en garanteret HTTP-cacheperiode for hele endpointet.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/servers/EksempelSMP/favicon' \
--header 'Accept: image/png, application/json'Eksempel på svar
Binært PNG når serveren og et ikon findes.
GET/servers/{name}/storeServerbutikkens katalog
Offentlig
/servers/{name}/storeServerbutikkens katalog
Kategorier, aktiverede produkter, EMS-prisoverslag og køberaktivitet, når offentlig visning er slået til. At læse kataloget gennemfører ikke et køb.
Direkte linkParametre
nameURL-sti · stringpåkrævetServerens navn. URL-kod navnet som et enkelt stisegment.
Værd at vide
- Ukendt server returnerer HTTP 200 med {"error":"Server not found."}. Cache-Control: no-store, så købernes aktuelle privatlivsindstilling respekteres.
- categories har uid/name/imageURL. products har uid/type/name/price/priceDKK/intervals/volumeDiscounts/description/duration/categoryUID/imageURL/automaticDiscount/priceQuote. Billed-URL og prisfelter kan være null; imageUID udelades fra JSON.
- Produkttype er eksempelvis standard, bulk, subscription eller upgrade. Abonnementets duration angiver antal dage; øvrige produkters duration kan være null.
- volumeDiscounts er {minimumQuantity,discountPercent}[] og er [] for produkter der ikke er bulk. automaticDiscount er null eller {discountPercent,label}. priceQuote er null uden en gyldig EMS-pris.
- priceQuote har unitPrice, quantity, subtotal, discountPercent, discountAmount, total (tal), nextTier (rabattrin|null), discountSource (volume|automatic|code|null), discountLabel og discountCode (string|null). Bulk-overslaget bruger intervals; øvrige produkter bruger 1. Rabatter kombineres ikke: den største konkrete besparelse vælges.
- showBuyers er boolean. false giver tomme topBuyers/recentBuyers. Ellers vises højst fem topkøbere og seks forskellige nylige købere blandt de seneste 30 køb. Kun accepterede EMS-ordrer medtages, udbetalinger udelades, og spillerne skal være offentligt synlige og ikke skjult via vanish.
- Katalogets prisoverslag inkluderer mængde- og automatiske rabatter, men ikke en brugerindtastet rabatkode.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/servers/EksempelSMP/store' \
--header 'Accept: application/json'Eksempel på svar
Katalogobjekt eller {error} ved ukendt server. checkout.currency er EMS; produkternes price/priceDKK kan være database-decimalstrenge, men priceQuote bruger tal.
{
"checkout": {
"version": 1,
"currency": "EMS",
"idempotency": true
},
"showBuyers": true,
"topBuyers": [
{
"username": "EksempelSpiller",
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"orders": 4,
"items": 256,
"spent": 720,
"spentCurrency": "EMS",
"lastPurchasedAt": "2026-10-01T12:00:00.000Z"
}
],
"recentBuyers": [
{
"username": "EksempelSpiller",
"uuid": "123e4567-e89b-42d3-a456-426614174001",
"productName": "Diamanter",
"amount": 180,
"currency": "EMS",
"purchasedAt": "2026-10-01T12:00:00.000Z"
}
],
"categories": [
{
"uid": "resources",
"name": "Ressourcer",
"imageURL": null
}
],
"products": [
{
"uid": "diamonds",
"name": "Diamanter",
"type": "bulk",
"duration": null,
"intervals": 8,
"price": "3.125",
"priceDKK": null,
"volumeDiscounts": [
{
"minimumQuantity": 64,
"discountPercent": 10
},
{
"minimumQuantity": 128,
"discountPercent": 15
}
],
"description": "Diamanter til dine byggeprojekter.",
"categoryUID": "resources",
"imageURL": null,
"automaticDiscount": null,
"priceQuote": {
"unitPrice": 3.125,
"quantity": 8,
"subtotal": 25,
"discountPercent": 0,
"discountAmount": 0,
"total": 25,
"nextTier": {
"minimumQuantity": 64,
"discountPercent": 10
},
"discountSource": null,
"discountLabel": null,
"discountCode": null
}
}
]
}Information/information
Netværkets status, spillerantal og fællesskabets regler.
GET/informationNetværksinformation
Offentlig
/informationNetværksinformation
Hent netværkets aktive MOTD, favicon, antal online spillere og samlede antal tilslutninger til servere og lobbyer.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Oplysningerne opdateres normalt hvert minut. Hvis flere MOTD'er er aktive, kan en anden vælges ved næste opdatering.
- players er det samlede antal konti markeret som online, ikke antallet af offentligt synlige profiler.
- totalJoins tæller registrerede tilslutninger til servere og lobbyer, ikke unikke spillere.
- ip er null i den nuværende implementering. favicon, totalJoins, line1 og line2 starter som null; players starter ved 0.
- Hvis en opdatering mislykkes, kan de tidligere oplysninger fortsat være tilgængelige. Svaret indeholder ikke et opdateringstidspunkt.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/information' \
--header 'Accept: application/json'Eksempel på svar
Et øjebliksbillede af netværksinformationen. Felter kan være null ved opstart, eller når data ikke er tilgængelige.
{
"favicon": null,
"ip": null,
"players": 12,
"totalJoins": 12000,
"line1": "Velkommen til Example-netværket",
"line2": "Spil med dine venner"
}GET/information/rulesNetværkets regler
Offentlig
/information/rulesNetværkets regler
Hent netværkets fælles regler som HTML i et JSON-objekt.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Reglerne hentes fra den fælles dokumentkilde og gemmes i cache i fem minutter efter en vellykket hentning.
- Hvis hentningen mislykkes, indeholder svaret tidligere HTML eller html: null med HTTP 200. Fejl hos dokumentkilden har ingen særskilt statuskode.
- Svaret er application/json, selvom html-feltet indeholder et HTML-dokument.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/information/rules' \
--header 'Accept: application/json'Eksempel på svar
html er en HTML-streng eller null, hvis reglerne endnu ikke er hentet.
{
"html": "<html><body><h1>Eksempel på regler</h1><p>Vis respekt for andre spillere.</p></body></html>"
}Lobbyer/lobbies
Butikker i Shoppylobby, item-tilbud og historiske markedspriser.
GET/lobbies/shoppylobby/marketShoppylobbys butikker og tilbud
Offentlig
/lobbies/shoppylobby/marketShoppylobbys butikker og tilbud
Hent aktive, ejede AreaShop-regioner og deres ChestShop-tilbud. Ejeren er plot-ejeren fra AreaShop, uafhængigt af skiltets ejer. Tomme aktive plots har listings: [].
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Ingen parametre kræves. Serveren er fast shoppylobby. Svaret omfatter begge handelsretninger; ruten har intet filter for item eller plot.
- B/buyPrice er prisen, spilleren betaler butikken. S/sellPrice er beløbet, butikken betaler spilleren. Prisen gælder amount items; divider nøjagtigt for at beregne prisen pr. item.
- Priser er decimalstrenge. null betyder, at handelsretningen ikke findes; 0 er et reelt tilbud. itemVariantKey er et fingeraftryk af itemet, ikke en billed-URL eller nødvendigvis itemId i historikruten.
- SOLD/RESELL og ikke-udløbne RENTED-regioner kan medtages. Kan ejerens UUID ikke kobles entydigt til en spiller, er playerID/username null, mens den gyldige ejer-UUID bevares.
- HTTP-svaret bruger Cache-Control: no-store. Backend genbruger normalt kataloget i 30 sekunder og kontrollerer udløb ved hvert kald. Spejlede data garanterer ikke, at varen er på lager.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/lobbies/shoppylobby/market' \
--header 'Accept: application/json'Eksempel på svar
Et katalog med server, hentetidspunkt og butikker.
{
"server": "shoppylobby",
"fetchedAt": "2030-06-01T12:00:00.000Z",
"shops": [
{
"id": "3333333333333333333333333333333333333333333333333333333333333333",
"server": "shoppylobby",
"world": "world",
"regionName": "example_plot",
"regionType": "RENT",
"owner": {
"playerID": 42,
"uuid": "00000000-0000-4000-8000-000000000001",
"username": "ExamplePlayer"
},
"expiresAt": "2030-06-10T12:00:00.000Z",
"min": {
"x": 0,
"y": 0,
"z": 0
},
"max": {
"x": 15,
"y": 255,
"z": 15
},
"syncedAt": "2030-06-01T11:00:00.000Z",
"listings": [
{
"id": "4444444444444444444444444444444444444444444444444444444444444444",
"server": "shoppylobby",
"world": "world",
"regionName": "example_plot",
"x": 5,
"y": 64,
"z": 5,
"item": "Coal",
"itemMaterial": "COAL",
"itemKey": "minecraft:coal",
"itemJson": {
"schemaVersion": 1,
"id": "minecraft:coal",
"material": "COAL",
"iconKey": "coal",
"amount": 64
},
"itemVariantKey": "2222222222222222222222222222222222222222222222222222222222222222",
"amount": 64,
"buyPrice": "8.00000000",
"sellPrice": "4.00000000",
"syncedAt": "2030-06-01T11:00:00.000Z"
}
]
}
]
}GET/lobbies/shoppylobby/market/items/{itemId}/historyEt items bedste historiske priser
Offentlig
/lobbies/shoppylobby/market/items/{itemId}/historyEt items bedste historiske priser
Hent registrerede ændringer i den bedste pris for en præcis item-variant fra frontenden. buy følger laveste B-pris; sell følger højeste S-pris pr. item.
Direkte linkParametre
itemIdURL-sti · stringpåkrævetPræcis 64 hexadecimale tegn med små bogstaver: SHA-256 af frontendens semantiske item-identitet. Brug item-sidens id, ikke den rå itemVariantKey, material eller Minecraft-id.
directionURL-parameter · stringvalgfribuy eller sell, set fra spillerens side.
Standard: buy
rangeURL-parameter · stringvalgfri1m, 3m eller all. Måneder er UTC-kalendermåneder; datoen begrænses til den valgte måneds sidste dag.
Standard: 1m
Værd at vide
- Kun direction og range accepteres som query-parametre; hver skal være en enkelt streng. Ukendte og gentagne parametre afvises.
- Historikjobbet kontrollerer hver 6. time og gemmer første pris samt ændringer i enhedsprisen. Ejer- eller mængdeskift til samme enhedspris giver ikke et nyt punkt.
- points kan være tomt. Første punkt kan være en tidligere måling lige før den valgte periode; dens recordedAt ændres ikke. from er null ved all.
- through går kun til sidste kendte historikopdatering. lastCheckedAt kan være null. Et bortfaldet tilbud er ikke et nul-prispunkt og dokumenterer ikke lager eller løbende tilgængelighed.
- price/amount beskriver den oprindelige handel. numerator/denominator angiver den præcise enhedspris som heltalsstrenge; undgå floating-point ved sammenligning.
- Der returneres højst 2.001 punkter, inklusive en mulig måling før perioden. Store perioder udvælger første, sidste, laveste og højeste ændring i kronologiske grupper over hele perioden; sampled/totalChanges beskriver udvalget.
- HTTP: Cache-Control: no-store. Backend kan genbruge det samme historiksvar i 120 sekunder. Alle tidsfelter er UTC.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/lobbies/shoppylobby/market/items/1111111111111111111111111111111111111111111111111111111111111111/history?direction=sell&range=1m' \
--header 'Accept: application/json'Eksempel på svar
Prishistorik med målegrænse og eventuelle registrerede prisændringer.
{
"server": "shoppylobby",
"itemId": "1111111111111111111111111111111111111111111111111111111111111111",
"direction": "sell",
"range": "1m",
"fetchedAt": "2030-06-01T12:30:00.000Z",
"from": "2030-05-01T12:30:00.000Z",
"through": "2030-06-01T12:00:00.000Z",
"lastCheckedAt": "2030-06-01T12:00:00.000Z",
"sampled": false,
"totalChanges": 1,
"points": [
{
"recordedAt": "2030-06-01T06:00:00.000Z",
"price": "8.00000000",
"amount": 64,
"numerator": "1",
"denominator": "8",
"owner": {
"playerID": 42,
"uuid": "00000000-0000-4000-8000-000000000001",
"username": "ExamplePlayer"
},
"world": "world",
"regionName": "example_plot"
}
]
}Butiks-API/storeapi
Forbind et serverplugin med køb, levering, betalinger og stemmer.
GET/storeapi/v2/purchasesHent og forny ventende køb
Servernøgle
/storeapi/v2/purchasesHent og forny ventende køb
Hent serverens ventende ordrer. Kaldet fornyer først abonnementer og kan derfor ændre data, selvom det bruger GET.
Direkte linkKan oprette ventende abonnementsordrer, trække spillerens EMS til reserveret saldo (escrow) og nulstille fornyelsesmarkøren. Udløbne abonnementer og abonnementer, der ikke kan betales, kan blive annulleret.
Parametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- amount er ordretotalen; product.price er total/quantity. Bevar totalens værdi uden unødig floating-point-afrunding.
- Modtagerens uuid bruges til levering. Listen omfatter alle ventende ordrer for serveren; den har ingen parametre til sideinddeling eller datofiltrering.
- Brug kaldet fra serverintegrationen. Undgå browser/CDN-caching og automatiske linkvisninger: dette GET kan ændre saldi og abonnementsstatus.
- Items og kommandoer leveres af serverintegrationen; svaret bekræfter ikke i sig selv levering.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/storeapi/v2/purchases' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE'Eksempel på svar
Ventende køb for nøglens server; product er et JSON-objekt.
[
{
"id": "EXAMPLE_ORDER_UID",
"amount": "100.00",
"uuid": "00000000-0000-4000-8000-000000000001",
"product": {
"type": "bulk",
"id": "example_product",
"name": "Eksempelpakke",
"price": 25,
"quantity": 4,
"duration": null
}
}
]PUT/storeapi/v2/purchasesGodkend et ventende køb
Servernøgle
/storeapi/v2/purchasesGodkend et ventende køb
Behandl en ventende EMS-ordre efter serverens levering. Ordren slås op og behandles under transaktionslåse.
Direkte linkÆndrer ordren til accepted, registrerer processed, frigiver den reserverede saldo til butiksejeren og eventuelle medejere og opdaterer abonnementets næste fornyelse, hvis købet er et abonnement.
Parametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
purchaseForespørgselsindhold · stringpåkrævetOrdre-id'et fra feltet id i købslisten, 1–255 tegn. Det skal entydigt identificere en ventende EMS-ordre på nøglens server. Udbetalingsordrer (payout) kan ikke behandles her.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- Flere fejl returneres med HTTP 200 som JSON eller tekst. Kontroller svarindholdet, også når HTTP-status er 200.
- Der er intet idempotency-key-felt. Et allerede behandlet køb afvises med Purchase is not pending; en gentagelse returnerer ikke endnu en success-bekræftelse.
- Ruten leverer ikke selv Minecraft-items. Den kan ikke behandle udbetalingsordrer (payout) eller DKK-betalinger.
Eksempel på forespørgsel
Content-Type: application/json
curl --request PUT 'https://api.superawesome.dk/storeapi/v2/purchases' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE' \
--header 'Content-Type: application/json' \
--data-raw '{"purchase":"EXAMPLE_ORDER_UID"}'Eksempel på svar
Ordren blev behandlet.
successPUT/storeapi/purchases/declineAfvis og refunder et ventende køb
Servernøgle
/storeapi/purchases/declineAfvis og refunder et ventende køb
Afvis en ventende EMS-ordre fra serveren. Den aktive afvisningsroute indeholder ikke /v2.
Direkte linkÆndrer ordren til denied, registrerer grund og behandlingstidspunkt, returnerer den reserverede EMS til betaleren og annullerer et eventuelt tilknyttet abonnement.
Parametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
purchaseForespørgselsindhold · stringpåkrævetOrdre-id'et fra feltet id i købslisten, 1–255 tegn. Det skal entydigt identificere en ventende EMS-ordre på nøglens server. Udbetalingsordrer (payout) kan ikke behandles her.
reasonForespørgselsindhold · stringvalgfriValgfri afvisningsgrund. En ikke-tom streng gemmes; manglende værdi eller en værdi, der ikke er en streng, bliver null.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- Flere fejl returneres med HTTP 200 som JSON eller tekst. Kontroller svarindholdet, også når HTTP-status er 200.
- Tilbagebetalingen kommer fra den ventende ordres reserverede saldo. Udbetalingsordrer, DKK-ordrer og allerede behandlede ordrer afvises.
- Brug kun eksempel-id'er ved læsning af dokumentationen. Et rigtigt purchase-id påvirker en rigtig ordre og saldo.
Eksempel på forespørgsel
Content-Type: application/json
curl --request PUT 'https://api.superawesome.dk/storeapi/purchases/decline' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE' \
--header 'Content-Type: application/json' \
--data-raw '{"purchase":"EXAMPLE_ORDER_UID","reason":"Eksempel: varen kunne ikke leveres"}'Eksempel på svar
Ordren blev behandlet.
successPOST/storeapi/payUdbetal EMS fra serverejeren
Servernøgle
/storeapi/payUdbetal EMS fra serverejeren
Overfør EMS fra serverejerens balance til en kendt spiller og opret en accepted payout-ordre med en logpost. Kaldet overfører penge.
Direkte linkOpretter en udbetalingsordre og EMS-logpost, trækker beløbet fra serverejeren og lægger det til modtagerens balance.
Parametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
targetForespørgselsindhold · stringpåkrævetUUID-streng valideret af Zod; modtageren skal findes.
amountForespørgselsindhold · numberpåkrævetEMS-beløb som JSON-tal. Send et positivt beløb; den eksisterende validator angiver ingen minimums- eller maksimumsværdi.
titleForespørgselsindhold · stringpåkrævet3–255 tegn. Titel på udbetalingsordren.
descriptionForespørgselsindhold · stringpåkrævet3–255 tegn. Begrundelse på udbetalingsordren.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- Flere fejl returneres med HTTP 200 som JSON eller tekst. Kontroller svarindholdet, også når HTTP-status er 200.
- Serverejerens aktive global/temp-ban blokerer udbetalingen; ejeren skal have tilstrækkelig saldo.
- Ruten har ingen idempotency-key eller beskyttelse mod gentagne kald. Gentagelse af et vellykket kald kan overføre penge igen.
- JSON-indholdet i eksemplet er opdigtet. Udfør kun kaldet som en tilsigtet udbetaling fra en betroet serverintegration.
Eksempel på forespørgsel
Content-Type: application/json
curl --request POST 'https://api.superawesome.dk/storeapi/pay' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE' \
--header 'Content-Type: application/json' \
--data-raw '{"target":"00000000-0000-4000-8000-000000000001","amount":10,"title":"Eksempeludbetaling","description":"Opdigtet eksempel uden rigtig udbetaling"}'Eksempel på svar
Udbetalingen blev gennemført.
successGET/storeapi/v2/votesHent serverens ventende stemmer
Servernøgle
/storeapi/v2/votesHent serverens ventende stemmer
Hent ubehandlede stemmer for nøglens server inden for den aktuelle stemmeperiode.
Direkte linkParametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- Dagens stemmer og stemmer fra den seneste time medtages. Dagsgrænsen følger databasens dato. Feltet date i svaret er et Unix-tidspunkt i millisekunder.
- Dette GET markerer ikke stemmer som behandlet. Brug PUT /storeapi/v2/votes, efter serveren har givet belønningen.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/storeapi/v2/votes' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE'Eksempel på svar
Liste med stemme-id'er, spillere og tidspunkter.
[
{
"id": "EXAMPLE_VOTE_UID",
"username": "ExamplePlayer",
"uuid": "00000000-0000-4000-8000-000000000001",
"date": 1893499200000
}
]PUT/storeapi/v2/votesMarker stemmer som behandlet
Servernøgle
/storeapi/v2/votesMarker stemmer som behandlet
Sæt processed på stemme-id'er, der tilhører nøglens server. Endpointet giver ikke selv spilleren en belønning.
Direkte linkSætter processed til det aktuelle tidspunkt på matchende stemmer på serveren. En gentagelse kan ændre processed-tidspunktet igen.
Parametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
votesForespørgselsindhold · arraypåkrævetIkke-tom liste af stemme-id'er. Send id-strenge; ruten kontrollerer arrayet og dets længde, men ikke hvert elements type.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- Flere fejl returneres med HTTP 200 som JSON eller tekst. Kontroller svarindholdet, også når HTTP-status er 200.
- Votes fra andre servere ændres ikke. Ukendte id'er kan stadig give success: true, fordi affectedRows ikke kontrolleres.
Eksempel på forespørgsel
Content-Type: application/json
curl --request PUT 'https://api.superawesome.dk/storeapi/v2/votes' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE' \
--header 'Content-Type: application/json' \
--data-raw '{"votes":["EXAMPLE_VOTE_UID"]}'Eksempel på svar
Opdateringen blev udført; svaret angiver ikke antallet af resultater.
{
"success": true
}GET/storeapi/v2/votes/players/{uuid}Hent en spillers stemmer på serveren
Servernøgle
/storeapi/v2/votes/players/{uuid}Hent en spillers stemmer på serveren
Hent alle kendte stemmer for spilleren og nøglens server, inklusive behandlede stemmer. Ruten har intet dagsfilter eller sideinddeling.
Direkte linkParametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
uuidURL-sti · stringpåkrævetSpillerens UUID. Spilleren skal findes. Disse stemmeruter slår UUID'et op uden særskilt kontrol af UUID-formatet.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- date er et Unix-tidspunkt i millisekunder. Der er ingen garanteret sortering eller parameter til at afgrænse historikken.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/storeapi/v2/votes/players/00000000-0000-4000-8000-000000000001' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE'Eksempel på svar
Stemmelisten.
[
{
"id": "EXAMPLE_VOTE_UID",
"username": "ExamplePlayer",
"uuid": "00000000-0000-4000-8000-000000000001",
"date": 1893499200000
}
]GET/storeapi/v2/votes/players/{uuid}/pendingFind en spillers ventende stemme
Servernøgle
/storeapi/v2/votes/players/{uuid}/pendingFind en spillers ventende stemme
Hent en ubehandlet stemme for spilleren på serveren inden for den aktuelle stemmeperiode.
Direkte linkParametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
uuidURL-sti · stringpåkrævetSpillerens UUID. Spilleren skal findes. Disse stemmeruter slår UUID'et op uden særskilt kontrol af UUID-formatet.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- Dagens stemmer og stemmer fra den seneste time medtages. Dagsgrænsen følger databasens dato. Feltet date i svaret er et Unix-tidspunkt i millisekunder.
- Ved flere resultater returneres en stemme uden garanteret sortering. Svaret markerer den ikke som behandlet; en ukendt servernøgle kan give No pending votes.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/storeapi/v2/votes/players/00000000-0000-4000-8000-000000000001/pending' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE'Eksempel på svar
En matchende stemme.
{
"id": "EXAMPLE_VOTE_UID",
"username": "ExamplePlayer",
"uuid": "00000000-0000-4000-8000-000000000001",
"date": 1893499200000
}GET/storeapi/v2/votes/players/{uuid}/hasvotedHar spilleren stemt på serveren?
Servernøgle
/storeapi/v2/votes/players/{uuid}/hasvotedHar spilleren stemt på serveren?
Kontroller, om der findes en stemme i den aktuelle stemmeperiode. Behandlede stemmer tæller også med.
Direkte linkParametre
AuthorizationHTTP-header · stringpåkrævetAngiv serverens API-nøgle som hele værdien i headeren. Brug ikke Bearer eller et konto-token.
uuidURL-sti · stringpåkrævetSpillerens UUID. Spilleren skal findes. Disse stemmeruter slår UUID'et op uden særskilt kontrol af UUID-formatet.
Værd at vide
- API-nøglen bestemmer serveren. Disse ruter håndhæver ingen IP-begrænsning. Opbevar nøglen i serverkode.
- Dagens stemmer og stemmer fra den seneste time medtages. Dagsgrænsen følger databasens dato. Feltet date i svaret er et Unix-tidspunkt i millisekunder.
- Svaret angiver ikke, om en belønning er leveret, eller om stemmen er behandlet.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/storeapi/v2/votes/players/00000000-0000-4000-8000-000000000001/hasvoted' \
--header 'Accept: application/json' \
--header 'Authorization: DIN_SERVER_API_NOGLE'Eksempel på svar
Stemmestatus.
{
"hasVoted": true
}Login med SuperAwesome/oauth
OAuth med spillervalg og scopes til profil, servere, Shoppy, reklamer, transporter, MCMMO, emerald-overførsler og køb i SA Store.
GET/oauth/scopesAktuelle OAuth-scopes
Offentlig
/oauth/scopesAktuelle OAuth-scopes
Hent kataloget over rettigheder, som din app kan ansøge om, og brugeren kan give samtykke til.
Direkte linkDette endpoint tager ingen parametre.
Værd at vide
- Opret appen i /dashboard/apps. Før produktionsgodkendelse kan kun app-ejeren give adgang til sine egne tilknyttede spillere. Nye scopes kræver app-godkendelse og nyt brugersamtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/scopes' \
--header 'Accept: application/json'Eksempel på svar
Scope-katalog med ID, kategori og brugerrettet beskrivelse.
[
{
"id": "player:profile",
"category": "Profil",
"description": "Se dit UUID og brugernavn"
},
{
"id": "player:balance",
"category": "Profil",
"description": "Se din emerald-balance"
},
{
"id": "servers:read",
"category": "Servere",
"description": "Se dine servere"
},
{
"id": "emeralds:transfer:request",
"category": "Emeralds",
"description": "Anmode om overførsler af dine emeralds, som du godkender enkeltvis"
},
{
"id": "store:purchases:request",
"category": "SA Store",
"description": "Anmode om køb i SA Store med dine emeralds, som du godkender enkeltvis"
},
{
"id": "shoppy:plots:read",
"category": "Shoppy",
"description": "Se dine Shoppy-plots"
},
{
"id": "shoppy:chestshops:read",
"category": "Shoppy",
"description": "Se dine chestshops og priser i Shoppy"
},
{
"id": "advertisements:read",
"category": "Reklamer",
"description": "Se dine reklamer, deres status og visninger"
},
{
"id": "transporter:items:read",
"category": "Transporter",
"description": "Se dine items og antal i din transporter"
},
{
"id": "mcmmo:read",
"category": "MCMMO",
"description": "Se dine MCMMO-levels og erfaring"
}
]POST/oauth/tokenByt en kode eller forny tokens
OAuth-klient
/oauth/tokenByt en kode eller forny tokens
Byt callback-koden for access- og refresh-token, eller brug det seneste refresh-token til at rotere begge tokens. Udfør kaldet på appens backend.
Direkte linkKoden eller refresh-tokenet forbruges, og et nyt tokenpar udstedes. Genbrug af en allerede brugt kode eller refresh-token tilbagekalder hele adgangen.
Parametre
grant_typeForespørgselsindhold · "authorization_code" | "refresh_token"påkrævetVælg kodeudveksling eller refresh.
codeForespørgselsindhold · stringvalgfriPåkrævet ved authorization_code. Engangskoden fra callback; brug inden 60 sekunder.
redirect_uriForespørgselsindhold · stringvalgfriPåkrævet ved authorization_code. Præcis den URL, der blev brugt i autorisationsforespørgslen.
code_verifierForespørgselsindhold · stringvalgfriPåkrævet ved authorization_code. Den gemte PKCE-verifier, 43–128 tegn af A–Z, a–z, 0–9, punktum, underscore, tilde og bindestreg.
refresh_tokenForespørgselsindhold · stringvalgfriPåkrævet ved refresh_token. Det seneste, endnu ikke brugte refresh-token.
scopeForespørgselsindhold · stringvalgfriValgfrit. Hvis medtaget skal det være præcis samme scope-sæt som den oprindelige adgang; der kan hverken tilføjes eller fjernes scopes her.
client_idForespørgselsindhold · stringvalgfriAlternativ til HTTP Basic sammen med client_secret. Brug kun én godkendelsesmetode.
client_secretForespørgselsindhold · stringvalgfriAlternativ til HTTP Basic sammen med client_id. Gem på backend.
Værd at vide
- Send application/x-www-form-urlencoded. JSON understøttes også. HTTP Basic bruger base64 af URL-encoded client_id + ':' + URL-encoded client_secret; body-godkendelse er et alternativ.
- Access tokens lever højst 900 sekunder. Refresh-token og adgang udløber 90 dage efter det oprindelige samtykke; rotation forlænger ikke perioden. expires_in kan være kortere tæt på dette udløb.
- Gem det nye refresh-token atomisk og undgå samtidige refresh-kald. Gentag ikke blindt en forbrugt kode eller et refresh-token ved en netværksfejl; genbrug kan tilbagekalde adgangen.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
Content-Type: application/x-www-form-urlencoded
curl --request POST 'https://api.superawesome.dk/oauth/token' \
--header 'Accept: application/json' \
--user 'DIT_CLIENT_ID:DIT_CLIENT_SECRET' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=KODEN_FRA_CALLBACK' \
--data-urlencode 'redirect_uri=https://example.com/oauth/callback' \
--data-urlencode 'code_verifier=DIN_GEMTE_PKCE_VERIFIER_PAA_MINDST_43_TEGN_12345'Eksempel på svar
Nye opaque tokens. expires_in er access-tokenets resterende levetid i sekunder; ingen ID-token.
{
"access_token": "DIT_NYE_ACCESS_TOKEN",
"refresh_token": "DIT_NYE_REFRESH_TOKEN",
"token_type": "Bearer",
"expires_in": 900,
"scope": "player:profile player:balance"
}POST/oauth/revokeTilbagekald en OAuth-adgang
OAuth-klient
/oauth/revokeTilbagekald en OAuth-adgang
Tilbagekald hele adgangen, som appens token tilhører, inklusive tilknyttede access- og refresh-tokens.
Direkte linkTilbagekalder hele tokenets adgang, hvis det tilhører den godkendte app.
Parametre
tokenForespørgselsindhold · stringpåkrævetEt access- eller refresh-token udstedt til din app.
client_idForespørgselsindhold · stringvalgfriAlternativ til HTTP Basic sammen med client_secret; bland ikke metoderne.
client_secretForespørgselsindhold · stringvalgfriAlternativ til HTTP Basic sammen med client_id.
Værd at vide
- Send application/x-www-form-urlencoded; JSON understøttes også. Spilleren kan også tilbagekalde adgang i kontrolpanelet.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
Content-Type: application/x-www-form-urlencoded
curl --request POST 'https://api.superawesome.dk/oauth/revoke' \
--header 'Accept: application/json' \
--user 'DIT_CLIENT_ID:DIT_CLIENT_SECRET' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=DIT_ACCESS_ELLER_REFRESH_TOKEN'Eksempel på svar
Tomt JSON-objekt. Ukendte eller andre apps' tokens giver også 200 uden at ændre deres adgang.
{}GET/oauth/v1/player/profileDen valgte spillers profil
OAuth-token
/oauth/v1/player/profileDen valgte spillers profil
Hent ID, UUID og brugernavn for den spiller, der gav appen adgang. Emerald-saldo medtages kun, hvis brugeren også gav player:balance.
Direkte linkplayer:profileDette endpoint tager ingen parametre.
Værd at vide
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/profile' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
Profil med player:profile alene. balance er udeladt.
{
"id": "123",
"uuid": "11111111-1111-4111-8111-111111111111",
"username": "ExamplePlayer"
}GET/oauth/v1/player/balanceDen valgte spillers emerald-saldo
OAuth-token
/oauth/v1/player/balanceDen valgte spillers emerald-saldo
Hent emerald-saldoen for spilleren, som gav appen dette særskilte scope. Kaldet kan ikke ændre saldoen.
Direkte linkplayer:balanceDette endpoint tager ingen parametre.
Værd at vide
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/balance' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
Den valgte spillers balance.
{
"balance": 1250
}GET/oauth/v1/player/serversDen valgte spillers serverliste
OAuth-token
/oauth/v1/player/serversDen valgte spillers serverliste
Hent servere, som spilleren ejer eller er tilknyttet som subuser, med status, version og MOTD.
Direkte linkservers:readParametre
limitURL-parameter · integervalgfriAntal resultater pr. side, 1–100.
Standard: 50
offsetURL-parameter · integervalgfriAntal resultater, der springes over, 0–100.000.
Standard: 0
Værd at vide
- Der returneres ingen servernøgler eller adgangsoplysninger. Listen omfatter både ejede servere og subuser-adgang; is_owner viser forskellen.
- Kun limit og offset accepteres. Ukendte parametre, gentagne værdier, decimaler og værdier uden for intervallet giver invalid_request.
- has_more viser, om der var flere resultater ved opslaget. Øg offset med limit for næste side. Datoer er ISO 8601 i UTC eller null; utilgængelige felter kan være null.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/servers?limit=50&offset=0' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
En side af spillerens servere, sorteret efter server-ID.
{
"data": [
{
"id": "42",
"name": "Example-SMP",
"status": "online",
"type": "survival",
"version": "1.21.4",
"is_owner": true,
"created_at": "2026-10-07T12:00:00.000Z",
"last_online_at": "2026-10-07T12:00:00.000Z",
"motd": {
"line1": "Velkommen",
"line2": null
}
}
],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": false
}
}GET/oauth/v1/player/shoppy/plotsDen valgte spillers Shoppy-plots
OAuth-token
/oauth/v1/player/shoppy/plotsDen valgte spillers Shoppy-plots
Hent spillerens aktive plots i Shoppylobby med region, koordinater, ejerskabsstatus, pris og eventuelt lejeudløb.
Direkte linkshoppy:plots:readParametre
limitURL-parameter · integervalgfriAntal resultater pr. side, 1–100.
Standard: 50
offsetURL-parameter · integervalgfriAntal resultater, der springes over, 0–100.000.
Standard: 0
Værd at vide
- Omfatter SOLD og RESELL samt RENTED, hvor lejen ikke er udløbet. expires_at er kun udfyldt for leje; resell_price kun ved videresalg. Priser er decimaltekst eller null.
- Kun limit og offset accepteres. Ukendte parametre, gentagne værdier, decimaler og værdier uden for intervallet giver invalid_request.
- has_more viser, om der var flere resultater ved opslaget. Øg offset med limit for næste side. Datoer er ISO 8601 i UTC eller null; utilgængelige felter kan være null.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/shoppy/plots?limit=50&offset=0' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
En side af aktive plots, sorteret efter world og region_name.
{
"data": [
{
"server": "shoppylobby",
"world": "world",
"region_name": "shop_12",
"type": "rent",
"state": "RENTED",
"min": {
"x": 10,
"y": 60,
"z": 10
},
"max": {
"x": 20,
"y": 80,
"z": 20
},
"expires_at": "2026-10-07T12:00:00.000Z",
"price": "100.00",
"rent_duration_ms": 604800000,
"reselling": false,
"resell_price": null,
"synced_at": "2026-10-07T12:00:00.000Z"
}
],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": false
}
}GET/oauth/v1/player/shoppy/chestshopsDen valgte spillers chestshops
OAuth-token
/oauth/v1/player/shoppy/chestshopsDen valgte spillers chestshops
Hent chestshops, som den valgte spiller ejer, i aktive Shoppylobby-plots med item, placering og køb-/salgspriser.
Direkte linkshoppy:chestshops:readParametre
limitURL-parameter · integervalgfriAntal resultater pr. side, 1–100.
Standard: 50
offsetURL-parameter · integervalgfriAntal resultater, der springes over, 0–100.000.
Standard: 0
Værd at vide
- Ejerskab følger chestshoppens skilt; spilleren behøver ikke eje plottet. Kun butikker i aktive plots medtages. Rå item-data, YAML og skiltlinjer returneres ikke.
- buy_price og sell_price er decimaltekst eller null. null betyder, at en gyldig pris ikke er tilgængelig for den retning.
- Kun limit og offset accepteres. Ukendte parametre, gentagne værdier, decimaler og værdier uden for intervallet giver invalid_request.
- has_more viser, om der var flere resultater ved opslaget. Øg offset med limit for næste side. Datoer er ISO 8601 i UTC eller null; utilgængelige felter kan være null.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/shoppy/chestshops?limit=50&offset=0' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
En side af chestshops, sorteret efter world, region og skiltets koordinater.
{
"data": [
{
"server": "shoppylobby",
"world": "world",
"region_name": "shop_12",
"position": {
"x": 12,
"y": 64,
"z": 14
},
"item": "DIAMOND",
"item_material": "DIAMOND",
"item_key": "minecraft:diamond",
"item_json": null,
"amount": 1,
"buy_price": "100.00",
"sell_price": "80.00",
"admin_shop": false,
"synced_at": "2026-10-07T12:00:00.000Z"
}
],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": false
}
}GET/oauth/v1/player/advertisementsDen valgte spillers reklamer
OAuth-token
/oauth/v1/player/advertisementsDen valgte spillers reklamer
Hent spillerens reklamer med tekst, kladdestatus, godkendelsesstatus, afvisningsårsag og visninger. API’et er skrivebeskyttet.
Direkte linkadvertisements:readParametre
limitURL-parameter · integervalgfriAntal resultater pr. side, 1–100.
Standard: 50
offsetURL-parameter · integervalgfriAntal resultater, der springes over, 0–100.000.
Standard: 0
Værd at vide
- remaining_views er max(0, total_views − views), eller null når tællerne ikke er tilgængelige. image indeholder kun ID, afvisningsårsag og datoer; ingen billedfil.
- Kun limit og offset accepteres. Ukendte parametre, gentagne værdier, decimaler og værdier uden for intervallet giver invalid_request.
- has_more viser, om der var flere resultater ved opslaget. Øg offset med limit for næste side. Datoer er ISO 8601 i UTC eller null; utilgængelige felter kan være null.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/advertisements?limit=50&offset=0' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
En side af reklamer, nyeste først. Statusværdier returneres som tekst; image er metadata eller null.
{
"data": [
{
"id": "33333333-3333-4333-8333-333333333333",
"title": "Spil på Example-SMP",
"text": "Kom og byg med os",
"draft": false,
"status": "approved",
"denial_reason": null,
"created_at": "2026-10-07T12:00:00.000Z",
"total_views": 1000,
"views": 250,
"remaining_views": 750,
"server": {
"name": "Example-SMP",
"status": "online"
},
"image": null
}
],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": false
}
}GET/oauth/v1/player/transporter/itemsDen valgte spillers transporter-items
OAuth-token
/oauth/v1/player/transporter/itemsDen valgte spillers transporter-items
Hent items og antal i den valgte spillers transporter, sorteret efter material. Listen medtager kun positive gemte antal. Adgangen er skrivebeskyttet og gælder kun spilleren, der gav samtykke.
Direkte linktransporter:items:readParametre
limitURL-parameter · integervalgfriAntal resultater pr. side, 1–100.
Standard: 50
offsetURL-parameter · integervalgfriAntal resultater, der springes over, 0–100.000.
Standard: 0
Værd at vide
- Hver række indeholder material og amount. amount er et positivt heltal inden for JavaScripts sikre heltalsinterval eller null, hvis den gemte værdi er ugyldig. Utilgængelige material-værdier vises som null. Kaldet viser spillerens beholdning og kan ikke flytte items.
- material er det gemte item-ID, normalt med små bogstaver som diamond; ældre aliases bevares. amount tæller enkelte items, ikke stacks.
- Beholdningen caches i Redis i højst 30 sekunder fra observationen og kan derfor være op til 30 sekunder gammel. Sider caches særskilt for den valgte spiller, limit og offset. Hvis Redis er utilgængelig, hentes data fra databasen.
- Token, tilbagekaldelse, scopes og adgang til den valgte spiller kontrolleres ved hvert kald, også når data hentes fra cache. HTTP-svaret bruger fortsat Cache-Control: no-store. Der returneres ingen cache-tidsstempler.
- Kun limit og offset accepteres. Ukendte parametre, gentagne værdier, decimaler og værdier uden for intervallet giver invalid_request.
- has_more viser, om der var flere resultater ved opslaget. Øg offset med limit for næste side. Datoer er ISO 8601 i UTC eller null; utilgængelige felter kan være null.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/transporter/items?limit=50&offset=0' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
En side af transporter-items med positive gemte antal, sorteret efter material.
{
"data": [
{
"material": "diamond",
"amount": 64
}
],
"pagination": {
"limit": 50,
"offset": 0,
"has_more": false
}
}GET/oauth/v1/player/mcmmoDen valgte spillers MCMMO
OAuth-token
/oauth/v1/player/mcmmoDen valgte spillers MCMMO
Hent gemte MCMMO-levels og erfaring for den spiller, der gav appen adgang. API’et er skrivebeskyttet.
Direkte linkmcmmo:readDette endpoint tager ingen parametre.
Værd at vide
- skills indeholder gemte levels for 17 færdigheder samt det gemte total. experience indeholder gemt XP optjent på det nuværende level for de samme 17 færdigheder. total hentes fra den gemte værdi og beregnes ikke af API’et.
- Hvis spillerens MCMMO-bruger mangler, er begge sektioner null. Hvis en skills- eller experience-datarække mangler, er den pågældende sektion null; manglende data erstattes ikke med nulværdier.
- En feltværdi er et ikke-negativt sikkert heltal eller null, hvis den gemte værdi er ugyldig. Svaret indeholder kun skills og experience. Kaldet tager ingen query-parametre og har ingen sideinddeling.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/player/mcmmo' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
Gemte levels i skills og gemt XP på færdighedens nuværende level i experience. Alle felter i en tilgængelig sektion medtages.
{
"skills": {
"taming": 1,
"mining": 2,
"woodcutting": 3,
"repair": 4,
"unarmed": 5,
"herbalism": 6,
"excavation": 7,
"archery": 8,
"swords": 9,
"axes": 10,
"acrobatics": 11,
"fishing": 12,
"alchemy": 13,
"crossbows": 14,
"tridents": 15,
"maces": 16,
"spears": 17,
"total": 153
},
"experience": {
"taming": 100,
"mining": 200,
"woodcutting": 300,
"repair": 400,
"unarmed": 500,
"herbalism": 600,
"excavation": 700,
"archery": 800,
"swords": 900,
"axes": 1000,
"acrobatics": 1100,
"fishing": 1200,
"alchemy": 1300,
"crossbows": 1400,
"tridents": 1500,
"maces": 1600,
"spears": 1700
}
}POST/oauth/v1/emerald-transfersAnmod om en emerald-overførsel
OAuth-token
/oauth/v1/emerald-transfersAnmod om en emerald-overførsel
Opret en anmodning om emeralds fra den valgte spiller til en anden spiller. Svaret giver et godkendelseslink; oprettelsen flytter ingen emeralds.
Direkte linkemeralds:transfer:requestÆndrer dataOpretter en betalingsanmodning. Emeralds flyttes først, når spilleren godkender den konkrete anmodning på SuperAwesome.
Parametre
recipient_uuidForespørgselsindhold · uuidpåkrævetEksisterende Minecraft-spillers UUID med bindestreger. Skal være forskellig fra afsenderen.
amountForespørgselsindhold · integer | stringpåkrævetPositivt heltal, 1–1.000.000.000, som JSON-tal eller tekst. Ingen decimaler eller indledende nuller.
descriptionForespørgselsindhold · stringpåkrævetFormålet, som spilleren skal godkende. 1–1.000 tegn; skal indeholde andet end blanktegn. Indledende/afsluttende blanktegn fjernes.
expires_inForespørgselsindhold · integerpåkrævetØnsket levetid i sekunder, 60–86.400. Kan forkortes af adgangens udløb.
idempotency_keyForespørgselsindhold · stringpåkrævet8–128 tegn fra A–Z, a–z, 0–9, underscore og bindestreg. Identificerer én betaling inden for den præcise OAuth-adgang.
Værd at vide
- Send JSON. Ved retry skal samme idempotency_key, modtager, beløb, trimmet beskrivelse og expires_in bruges. Svaret bevarer det oprindelige ID og udløb, også hvis anmodningen allerede er besluttet eller udløbet. Brug en ny nøgle til en ny betaling.
- Anmodningen gælder den præcise OAuth-adgang og valgte spiller. Den kan kun hentes med et aktuelt token for samme adgang; en ny login-adgang får ikke adgang til gamle anmodninger.
- expiresAt er det tidligste af oprettelsestid + expires_in og adgangens oprindelige 90-dages udløb. En pending anmodning vises som expired efter udløb; approved og rejected bevarer deres status.
- Redirect spilleren til approval_url. Spilleren skal logge ind og godkende beløb, modtager og beskrivelse, før emeralds overføres. Status aflæses via GET; der er ingen callback-URL eller webhook for denne anmodning.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
Content-Type: application/json
curl --request POST 'https://api.superawesome.dk/oauth/v1/emerald-transfers' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"recipient_uuid":"22222222-2222-4222-8222-222222222222","amount":100,"description":"Betaling for en Shoppy-handel","expires_in":900,"idempotency_key":"order-2026-0001"}'Eksempel på svar
Ny anmodning eller den eksisterende anmodning ved et identisk retry. Beløb returneres som tekst.
{
"id": "EXAMPLE_TRANSFER_ID_REPLACE_WITH_RESPONSE_ID",
"app": {
"name": "ExampleApp",
"logoUrl": "https://example.com/logo.png"
},
"sender": {
"uuid": "11111111-1111-4111-8111-111111111111",
"username": "ExamplePlayer"
},
"recipient": {
"uuid": "22222222-2222-4222-8222-222222222222",
"username": "ExampleRecipient"
},
"amount": "100",
"description": "Betaling for en Shoppy-handel",
"expiresAt": "2026-10-07T12:15:00.000Z",
"status": "pending",
"approval_url": "https://superawesome.dk/oauth/transfer/EXAMPLE_TRANSFER_ID_REPLACE_WITH_RESPONSE_ID"
}GET/oauth/v1/emerald-transfers/{id}Hent en emerald-anmodnings status
OAuth-token
/oauth/v1/emerald-transfers/{id}Hent en emerald-anmodnings status
Hent pending, approved, rejected eller expired for en anmodning fra den samme OAuth-adgang og spiller.
Direkte linkemeralds:transfer:requestParametre
idURL-sti · stringpåkrævetAnmodningens ID fra oprettelsessvaret.
Værd at vide
- Et udløbet eller tilbagekaldt OAuth-token giver 401, selvom anmodningen stadig findes. Godkendelsessiden kan afvise ved udløb, manglende saldo, spillerban eller modtagerens saldoloft; spilleren ser fejlen dér, og anmodningen godkendes ikke.
- Anmodningen gælder den præcise OAuth-adgang og valgte spiller. Den kan kun hentes med et aktuelt token for samme adgang; en ny login-adgang får ikke adgang til gamle anmodninger.
- expiresAt er det tidligste af oprettelsestid + expires_in og adgangens oprindelige 90-dages udløb. En pending anmodning vises som expired efter udløb; approved og rejected bevarer deres status.
- Redirect spilleren til approval_url. Spilleren skal logge ind og godkende beløb, modtager og beskrivelse, før emeralds overføres. Status aflæses via GET; der er ingen callback-URL eller webhook for denne anmodning.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/emerald-transfers/EXAMPLE_TRANSFER_ID_REPLACE_WITH_RESPONSE_ID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
Anmodningens aktuelle status og oprindelige oplysninger. approved betyder, at overførslen er gennemført.
{
"id": "EXAMPLE_TRANSFER_ID_REPLACE_WITH_RESPONSE_ID",
"app": {
"name": "ExampleApp",
"logoUrl": "https://example.com/logo.png"
},
"sender": {
"uuid": "11111111-1111-4111-8111-111111111111",
"username": "ExamplePlayer"
},
"recipient": {
"uuid": "22222222-2222-4222-8222-222222222222",
"username": "ExampleRecipient"
},
"amount": "100",
"description": "Betaling for en Shoppy-handel",
"expiresAt": "2026-10-07T12:15:00.000Z",
"status": "approved",
"approval_url": "https://superawesome.dk/oauth/transfer/EXAMPLE_TRANSFER_ID_REPLACE_WITH_RESPONSE_ID"
}POST/oauth/v1/store-purchasesAnmod om et køb i SA Store
OAuth-token
/oauth/v1/store-purchasesAnmod om et køb i SA Store
Opret en anmodning om et konkret produkt og antal med den valgte spillers emeralds. Svaret indeholder butikkens pris og et godkendelseslink. Oprettelsen reserverer ingen emeralds og opretter ingen ordre.
Direkte linkstore:purchases:requestÆndrer dataGemmer en anmodning og et prisoverslag. Spilleren skal godkende på SuperAwesome, før en ordre oprettes og emeralds reserveres.
Parametre
server_nameForespørgselsindhold · stringpåkrævetServerens navn fra kataloget, 1–64 tegn efter trimning. Kontroltegn, /, backslash, ?, # og : accepteres ikke. Idempotens ignorerer forskel på store og små bogstaver i servernavnet.
product_uidForespørgselsindhold · stringpåkrævetProduktets uid i serverens butik. 1–255 bogstaver, tal, underscore eller bindestreg.
quantityForespørgselsindhold · integerpåkrævetJSON-heltal, 1–1.000.000. Bulk følger intervals; øvrige produkttyper kræver 1. En talstreng accepteres ikke.
descriptionForespørgselsindhold · stringpåkrævetFormålet, som spilleren skal godkende. 1–1.000 tegn og ikke tom efter trimning.
expires_inForespørgselsindhold · integerpåkrævetLevetid i sekunder, 60–86.400, højst adgangens resterende levetid.
idempotency_keyForespørgselsindhold · stringpåkrævet8–128 bogstaver, tal, underscore eller bindestreg. Genbrug samme nøgle og samme indhold ved retry inden for samme OAuth-adgang.
discount_codeForespørgselsindhold · stringvalgfriValgfri rabatkode: højst 20 bogstaver, tal, underscore eller bindestreg. Trimmes og normaliseres til store bogstaver; tom tekst svarer til ingen kode.
Værd at vide
- Send JSON. Identiske retries returnerer 201 med oprindeligt ID og udløb samt aktuel quote, status og udløb, også efter godkendelse, afvisning eller udløb. Spillerens ændring af rabatkoden ændrer ikke den oprindelige payloads idempotens. En ændret payload med samme nøgle giver 409 idempotency_conflict. Brug en ny nøgle til et nyt køb.
- quote indeholder tal, ikke decimalstrenge. subtotal er unitPrice × quantity; discountAmount og total følger SA Stores prisberegning. discountSource er volume, automatic, code eller null; rabatter kombineres ikke. Saldo kontrolleres ved spillerens godkendelse, ikke ved oprettelsen.
- Find serverens navn og produktets uid, type og intervals i GET /servers/{name}/store. quantity er 1 for standard, subscription og upgrade. For bulk skal quantity følge produktets intervals og købsgrænser.
- Den valgte OAuth-spiller betaler og modtager produktet. Appen kan ikke vælge en anden betaler/modtager, en egen pris eller DKK. Prisen beregnes af SA Store med gældende mængde-, automatiske og eventuelle kode-rabatter.
- Anmodningen er knyttet til den præcise OAuth-adgang og valgte spiller. Et aktuelt token fra en anden adgang kan ikke læse den. expiresAt er det tidligste af oprettelse + expires_in og adgangens oprindelige 90-dages udløb.
- Redirect spilleren til approval_url. Spilleren kan indtaste eller fjerne en rabatkode og se en opdateret quote, før produkt, antal, pris og beskrivelse godkendes. Abonnementer viser periodens pris og automatiske fornyelse, som fortsætter indtil annullering i spillerens abonnementer.
- discountCode er den aktuelt valgte kode; quote.discountCode er den kode, som faktisk giver rabatten, eller null når en bedre mængde- eller automatisk rabat vælges. quote_revision stiger ved opdatering af pris eller kode. Et GET eller et identisk retry kan derfor vise spillerens seneste quote.
- Ved godkendelse kontrolleres produkt, pris, rabatter, kontotilknytning, ban, saldo og købsgrænser igen. Produktvilkår, som er ændret, kræver en ny anmodning. En ændret pris kan spilleren opdatere og gennemse på godkendelsessiden. Den viste quote ændres ikke automatisk, og en ældre side kan ikke godkende en nyere quote.
- approved betyder, at en SA Store-ordre er oprettet og emeralds reserveret. order.state viser pending, accepted eller denied. accepted betyder, at serveren har accepteret ordren; det garanterer ikke i sig selv levering af items/kommandoer. SA Store håndterer afvisning og tilbagebetaling.
- Status aflæses via GET; der er ingen callback eller webhook. En udløbet pending anmodning vises som expired. Godkendelse kan gentages uden en ekstra ordre eller ekstra debitering; den eksisterende ordre returneres.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
Content-Type: application/json
curl --request POST 'https://api.superawesome.dk/oauth/v1/store-purchases' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"server_name":"EksempelSMP","product_uid":"diamonds","quantity":16,"description":"16 diamanter til dit byggeprojekt","expires_in":900,"idempotency_key":"store-order-2026-0001"}'Eksempel på svar
Ny anmodning eller identisk retry med oprindeligt ID og udløb samt aktuel quote. order er null indtil godkendelse.
{
"id": "EXAMPLE_STORE_PURCHASE_ID_REPLACE_WITH_RESPONSE_ID",
"app": {
"name": "ExampleApp",
"logoUrl": "https://example.com/logo.png"
},
"player": {
"uuid": "11111111-1111-4111-8111-111111111111",
"username": "ExamplePlayer"
},
"server": {
"name": "EksempelSMP"
},
"product": {
"uid": "diamonds",
"name": "Diamanter",
"type": "bulk",
"duration": null,
"intervals": 8
},
"quantity": 16,
"currency": "EMS",
"discountCode": null,
"quote_revision": 1,
"quote": {
"unitPrice": 3.125,
"quantity": 16,
"subtotal": 50,
"discountPercent": 10,
"discountAmount": 5,
"total": 45,
"nextTier": null,
"discountSource": "volume",
"discountLabel": "Mængderabat",
"discountCode": null
},
"description": "16 diamanter til dit byggeprojekt",
"expiresAt": "2026-10-07T12:15:00.000Z",
"status": "pending",
"approval_url": "https://superawesome.dk/oauth/store-purchase/EXAMPLE_STORE_PURCHASE_ID_REPLACE_WITH_RESPONSE_ID",
"order": null
}GET/oauth/v1/store-purchases/{id}Hent en SA Store-anmodnings status
OAuth-token
/oauth/v1/store-purchases/{id}Hent en SA Store-anmodnings status
Hent anmodningens oprindelige produkt og antal, den aktuelle quote og rabatkode samt afgørelsen og den tilknyttede SA Store-ordres status.
Direkte linkstore:purchases:requestParametre
idURL-sti · stringpåkrævetAnmodningens ID fra oprettelsessvaret.
Værd at vide
- Find serverens navn og produktets uid, type og intervals i GET /servers/{name}/store. quantity er 1 for standard, subscription og upgrade. For bulk skal quantity følge produktets intervals og købsgrænser.
- Den valgte OAuth-spiller betaler og modtager produktet. Appen kan ikke vælge en anden betaler/modtager, en egen pris eller DKK. Prisen beregnes af SA Store med gældende mængde-, automatiske og eventuelle kode-rabatter.
- Anmodningen er knyttet til den præcise OAuth-adgang og valgte spiller. Et aktuelt token fra en anden adgang kan ikke læse den. expiresAt er det tidligste af oprettelse + expires_in og adgangens oprindelige 90-dages udløb.
- Redirect spilleren til approval_url. Spilleren kan indtaste eller fjerne en rabatkode og se en opdateret quote, før produkt, antal, pris og beskrivelse godkendes. Abonnementer viser periodens pris og automatiske fornyelse, som fortsætter indtil annullering i spillerens abonnementer.
- discountCode er den aktuelt valgte kode; quote.discountCode er den kode, som faktisk giver rabatten, eller null når en bedre mængde- eller automatisk rabat vælges. quote_revision stiger ved opdatering af pris eller kode. Et GET eller et identisk retry kan derfor vise spillerens seneste quote.
- Ved godkendelse kontrolleres produkt, pris, rabatter, kontotilknytning, ban, saldo og købsgrænser igen. Produktvilkår, som er ændret, kræver en ny anmodning. En ændret pris kan spilleren opdatere og gennemse på godkendelsessiden. Den viste quote ændres ikke automatisk, og en ældre side kan ikke godkende en nyere quote.
- approved betyder, at en SA Store-ordre er oprettet og emeralds reserveret. order.state viser pending, accepted eller denied. accepted betyder, at serveren har accepteret ordren; det garanterer ikke i sig selv levering af items/kommandoer. SA Store håndterer afvisning og tilbagebetaling.
- Status aflæses via GET; der er ingen callback eller webhook. En udløbet pending anmodning vises som expired. Godkendelse kan gentages uden en ekstra ordre eller ekstra debitering; den eksisterende ordre returneres.
- Brug et OAuth access token i Authorization: Bearer ACCESS_TOKEN. Tokenet gælder kun den Minecraft-spiller, brugeren valgte ved samtykke; der er intet player_id-parameter til at skifte spiller.
- Access tokens lever højst 15 minutter. En adgang kan tilbagekaldes af spilleren eller ved ændret app-godkendelse, mistet kontotilknytning eller rotation af appens secret.
- En godkendt app kan ansøge om flere scopes i /dashboard/apps. En sådan godkendelse bevarer eksisterende tokens med deres oprindelige rettigheder; nye scopes kræver et nyt OAuth-flow og spillerens samtykke.
- Alle OAuth-svar bruger Cache-Control: no-store. Maksimum er 120 OAuth-kald pr. IP i samme minut; ved 429 er Retry-After 60 sekunder.
Eksempel på forespørgsel
curl --request GET 'https://api.superawesome.dk/oauth/v1/store-purchases/EXAMPLE_STORE_PURCHASE_ID_REPLACE_WITH_RESPONSE_ID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer DIT_OAUTH_ACCESS_TOKEN'Eksempel på svar
Aktuel status og quote. Her er købet godkendt, mens ordren afventer serverens behandling.
{
"id": "EXAMPLE_STORE_PURCHASE_ID_REPLACE_WITH_RESPONSE_ID",
"app": {
"name": "ExampleApp",
"logoUrl": "https://example.com/logo.png"
},
"player": {
"uuid": "11111111-1111-4111-8111-111111111111",
"username": "ExamplePlayer"
},
"server": {
"name": "EksempelSMP"
},
"product": {
"uid": "diamonds",
"name": "Diamanter",
"type": "bulk",
"duration": null,
"intervals": 8
},
"quantity": 16,
"currency": "EMS",
"discountCode": null,
"quote_revision": 1,
"quote": {
"unitPrice": 3.125,
"quantity": 16,
"subtotal": 50,
"discountPercent": 10,
"discountAmount": 5,
"total": 45,
"nextTier": null,
"discountSource": "volume",
"discountLabel": "Mængderabat",
"discountCode": null
},
"description": "16 diamanter til dit byggeprojekt",
"expiresAt": "2026-10-07T12:15:00.000Z",
"status": "approved",
"approval_url": "https://superawesome.dk/oauth/store-purchase/EXAMPLE_STORE_PURCHASE_ID_REPLACE_WITH_RESPONSE_ID",
"order": {
"uid": "EXAMPLE_ORDER_UID",
"state": "pending",
"currency": "EMS",
"amount": 45,
"quantity": 16,
"productName": "Diamanter"
}
}