{"openapi":"3.0.0","info":{"title":"Openapi OAuth Service","version":"2.1.0","description":"Umfassende OAuth-Verwaltungs-API, die es Entwicklern ermöglicht, OAuth-Tokens mit granularen, bereichsbasierten Berechtigungen zu erstellen, zu verwalten und zu überwachen. Zu den Funktionen gehören die Verwaltung des Token-Lebenszyklus, die Verfolgung von Nutzungsstatistiken, die wallet-basierte Abrechnung, die Handhabung von Abonnements, die Überwachung von Rückrufen und detaillierte Analysen über mehrere API-Domänen hinweg.","contact":{"url":"https://openapi.it/en/support","name":"Support"},"termsOfService":"https://openapi.it/en/terms-and-conditions"},"servers":[{"url":"https://oauth.openapi.com","description":"Produktion"},{"url":"https://test.oauth.openapi.com","description":"Sandbox"}],"tags":[{"name":"Tokens","description":"Vorgänge im Zusammenhang mit OAuth-Tokens"},{"name":"Scopes","description":"Vorgänge im Zusammenhang mit OAuth-Bereichen"},{"name":"Callbacks","description":"Vorgänge im Zusammenhang mit OAuth-Callbacks"},{"name":"Errors","description":"Vorgänge im Zusammenhang mit API-Fehlern"},{"name":"Wallet","description":"Vorgänge im Zusammenhang mit der mit Token verbundenen wallet"},{"name":"Stats","description":"Vorgänge im Zusammenhang mit der API-Nutzungsstatistik"},{"name":"Subscriptions","description":"Vorgänge im Zusammenhang mit Abonnements"}],"paths":{"/tokens":{"post":{"summary":"Ein neues Token erstellen","tags":["Tokens"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCreate"}}}},"responses":{"200":{"description":"Token erstellt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDetail"}}}},"422":{"description":"Validierungsfehler","content":{"application/json":{"examples":{"missing_scopes":{"summary":"fehlende Geltungsbereiche","value":{"success":false,"message":"missing scopes array","error":70,"data":null}},"invalid_scopes_format":{"summary":"ungültiges Format für den Geltungsbereich","value":{"success":false,"message":"invalid scopes format","error":80,"data":null}},"invalid_scopes":{"summary":"Ungültige Geltungsbereiche angegeben oder API nicht aktiviert","value":{"success":false,"message":"Invalid scopes specified or API not enabled","error":90,"data":null}}}}}}},"security":[{"Basic-Authentication":[]}]},"get":{"summary":"Liste oder Token Detail","tags":["Tokens"],"parameters":[{"name":"limit","in":"query","description":"Maximale Anzahl der zurückzugebenden Token (Standard 100, max 100)","required":false,"schema":{"type":"integer","default":100,"maximum":100}},{"name":"skip","in":"query","description":"Anzahl der zu überspringenden Token für die Paginierung (Standardwert 0)","required":false,"schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Liste oder Token Detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenListOrDetail"}}}},"404":{"description":"Token nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Not Found","error":120,"data":null}}}},"422":{"description":"Validierungsfehler","content":{"application/json":{"example":{"success":false,"message":"Invalid Token Format","error":60,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/scopes":{"get":{"summary":"Liste der verfügbaren Geltungsbereiche","tags":["Scopes"],"responses":{"200":{"description":"Liste der Geltungsbereiche","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UserScope"}}}}}}}},"security":[{"Basic-Authentication":[]}]}},"/tokens/{token}":{"get":{"summary":"Token nach ID abrufen","tags":["Tokens"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Token-Bezeichner"}],"responses":{"200":{"description":"Detail Token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDetail"}}}},"404":{"description":"Token nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Not Found","error":120,"data":null}}}},"422":{"description":"Validierungsfehler","content":{"application/json":{"example":{"success":false,"message":"Invalid Token Format","error":60,"data":null}}}}},"security":[{"Basic-Authentication":[]}]},"patch":{"summary":"Token nach ID aktualisieren","tags":["Tokens"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Token-Bezeichner"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenUpdate"}}}},"responses":{"200":{"description":"Token aktualisiert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"examples":{"token_id_required":{"summary":"Token ID ist erforderlich","value":{"success":false,"message":"Token ID is required","error":150,"data":null}}}}}},"401":{"description":"Unbefugte","content":{"application/json":{"examples":{"unauthorized_refresh":{"summary":"Unbefugte","value":{"success":false,"message":"Unauthorized","error":130,"data":null}},"unauthorized_authdata":{"summary":"Unbefugte","value":{"success":false,"message":"Unauthorized","error":140,"data":null}}}}}},"404":{"description":"Token nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Not Found","error":160,"data":null}}}},"422":{"description":"Validierungsfehler","content":{"application/json":{"examples":{"invalid_scopes_format":{"summary":"ungültiges Format für den Geltungsbereich","value":{"success":false,"message":"invalid scopes format","error":100,"data":null}},"invalid_scopes":{"summary":"Ungültige Geltungsbereiche angegeben oder API nicht aktiviert","value":{"success":false,"message":"Invalid scopes specified or API not enabled","error":110,"data":null}}}}}}},"security":[{"Basic-Authentication":[]},{"Refresh-Authentication":[]}]},"delete":{"summary":"Token nach ID löschen","tags":["Tokens"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Token-Bezeichner"}],"responses":{"200":{"description":"Token erfolgreich gelöscht","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Deleted"},"data":{"nullable":true}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"example":{"success":false,"message":"Token ID is required","error":170,"data":null}}}},"404":{"description":"Token nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Not Found","error":180,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/errors":{"get":{"summary":"Fehlerprotokolle auflisten","tags":["Errors"],"parameters":[{"name":"scopes","in":"query","required":false,"schema":{"type":"string"},"description":"Durch Kommata getrennte Liste von Bereichen zum Filtern von Fehlern"},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0},"description":"Anzahl der zu überspringenden Fehler für die Paginierung"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"maximum":100},"description":"Maximale Anzahl von Fehlern, die zurückgegeben werden"}],"responses":{"200":{"description":"Liste der Fehlerprotokolle","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ErrorLog"}}}},"example":{"data":[{"id":"69822d1d48be79971b04351a","scope":"DELETE:oauth.openapi.com/tokens","domain":"oauth.openapi.com","errorAt":"2026-02-03T17:15:09+00:00","httpResponseCode":404,"errorCode":180,"message":"Not Found","ip":"93.146.69.125"},{"id":"69822d1d48be79971b04351b","scope":"GET:company.openapi.com/resource","domain":"company.openapi.com","errorAt":"2026-02-03T16:30:45+00:00","httpResponseCode":400,"errorCode":190,"message":"Query error","ip":"192.168.1.100"}]}}}},"400":{"description":"Abfragefehler","content":{"application/json":{"example":{"success":false,"message":"Query error","error":190,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/wallet":{"get":{"summary":"Abrufen von wallet-Informationen","tags":["Wallet"],"responses":{"200":{"description":"Informationen zur wallet","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Wallet"}}},"example":{"data":{"credit":125.5,"createdAt":"2025-01-15T10:00:00+00:00","updatedAt":"2026-02-12T08:30:00+00:00"}}}}}},"security":[{"Basic-Authentication":[]}]}},"/callbacks":{"get":{"summary":"Rückrufe auflisten oder Rückrufe nach ID abrufen","tags":["Callbacks"],"parameters":[{"name":"scopes","in":"query","required":false,"schema":{"type":"string"},"description":"Durch Kommata getrennte Liste von Bereichen zum Filtern von Rückrufen"},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0},"description":"Anzahl der zu überspringenden Rückrufe für die Paginierung"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"maximum":100},"description":"Maximale Anzahl der zurückzugebenden Rückrufe"}],"responses":{"200":{"description":"Rückruf-Information(en)","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/CallbackListElement"}},{"$ref":"#/components/schemas/Callback"}]}}},"examples":{"list":{"summary":"Liste der Rückrufe","value":{"data":[{"id":"65a1b2c3d4e5f6789abcdef0","scope":"POST:company.openapi.com/webhook","url":"https://example.com/callback","httpResponseCode":"200","startedAt":"2026-02-12T10:00:00+00:00","completedAt":"2026-02-12T10:00:05+00:00"},{"id":"65a1b2c3d4e5f6789abcdef1","scope":"POST:sms.openapi.com/send","url":"https://app.example.com/notify","httpResponseCode":"200","startedAt":"2026-02-12T09:30:00+00:00","completedAt":null}]}},"detail":{"summary":"Einzelne Rückrufdetails","value":{"data":{"id":"65a1b2c3d4e5f6789abcdef0","scope":"POST:company.openapi.com/webhook","domain":"company.openapi.com","active":false,"startedAt":"2026-02-12T10:00:00+00:00","createdAt":"2026-02-12T09:59:55+00:00","completedAt":"2026-02-12T10:00:05+00:00","httpResponseCode":200,"data":{"event":"user.created","userId":"12345"},"custom":{"trackingId":"abc-123"},"headers":{"Content-Type":"application/json","X-Webhook-Signature":"sha256=..."},"elapsedTime":5234,"attempt":1,"retry":0,"field":"webhookUrl","method":"POST","url":"https://example.com/callback"}}}}}}},"400":{"description":"Abfragefehler","content":{"application/json":{"example":{"success":false,"message":"Query error","error":210,"data":null}}}},"404":{"description":"Rückruf nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Callback not found","error":200,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/stats":{"get":{"summary":"Allgemeine API-Nutzungsstatistiken abrufen","tags":["Stats"],"parameters":[{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Datum-Filter"}],"responses":{"200":{"description":"Informationen zur Gesamtstatistik","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"totalRequests":{"type":"number","description":"Gesamtzahl der Anfragen"},"walletRequests":{"type":"number","description":"Anzahl der bezahlten wallet-Anfragen"},"subscriptionRequests":{"type":"number","description":"Anzahl der Abonnementanfragen"},"errorRequests":{"type":"number","description":"Anzahl der Fehleranfragen"},"walletAmount":{"type":"number","description":"Gesamtbetrag der Ausgaben über wallet"},"totalIps":{"type":"integer","description":"Gesamtzahl der eindeutigen IP-Adressen"},"totalApis":{"type":"integer","description":"Gesamtzahl der verwendeten APIs"}}}}},"example":{"data":{"totalRequests":1500,"walletRequests":800,"subscriptionRequests":700,"errorRequests":12,"walletAmount":125.5,"totalIps":45,"totalApis":8}}}}},"422":{"description":"Ungültiges Datumsformat","content":{"application/json":{"example":{"success":false,"message":"Invalid date format, must be YYYY or YYYY-MM or YYYY-MM-DD","error":240,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/stats/ips":{"get":{"summary":"Liste der eindeutigen IP-Adressen abrufen","tags":["Stats"],"parameters":[{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"Datumsfilter (JJJJ oder JJJJ-MM oder JJJJ-MM-TT)"}],"responses":{"200":{"description":"Array mit eindeutigen IP-Adressen","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string"}}}},"example":{"data":["192.168.1.1","10.0.0.5","172.16.0.100","203.0.113.42"]}}}},"422":{"description":"Ungültiges Datumsformat","content":{"application/json":{"example":{"success":false,"message":"Invalid date format, must be YYYY or YYYY-MM or YYYY-MM-DD","error":240,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/stats/apis":{"get":{"summary":"Statistiken gruppiert nach API-Domäne abrufen","tags":["Stats"],"parameters":[{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"Datumsfilter (JJJJ oder JJJJ-MM oder JJJJ-MM-TT)"}],"responses":{"200":{"description":"Statistiken gruppiert nach API-Bereich","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Objekt, bei dem jeder Schlüssel ein API-Bereich ist und der Wert Statistiken für diesen Bereich enthält","additionalProperties":{"type":"object","properties":{"totalRequests":{"type":"number","description":"Gesamtzahl der Anfragen für diesen Bereich"},"walletRequests":{"type":"number","description":"Anzahl der bezahlten wallet-Anfragen für diese Domain"},"subscriptionRequests":{"type":"number","description":"Anzahl der Abonnementanträge für diese Domäne"},"errorRequests":{"type":"number","description":"Anzahl der Fehlerabfragen für diese Domäne"},"walletAmount":{"type":"number","description":"Gesamtbetrag, der über die wallet für diese Domain ausgegeben wurde"},"totalIps":{"type":"integer","description":"Anzahl der eindeutigen IP-Adressen für diese Domäne"},"totalScopes":{"type":"integer","description":"Anzahl der Geltungsbereiche für diesen Bereich"}}}}}},"example":{"data":{"company.openapi.com":{"totalRequests":500,"walletRequests":300,"subscriptionRequests":200,"errorRequests":5,"walletAmount":45.5,"totalIps":20,"totalScopes":15},"sms.openapi.com":{"totalRequests":1000,"walletRequests":500,"subscriptionRequests":500,"errorRequests":7,"walletAmount":80,"totalIps":25,"totalScopes":20}}}}}},"422":{"description":"Ungültiges Datumsformat","content":{"application/json":{"example":{"success":false,"message":"Invalid date format, must be YYYY or YYYY-MM or YYYY-MM-DD","error":240,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/stats/apis/{domain}":{"get":{"summary":"Detaillierte Statistiken für eine bestimmte API-Domäne, einschließlich einer Aufschlüsselung der Geltungsbereiche","tags":["Stats"],"parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string"},"description":"API-Domain-Name","example":"company.openapi.com"},{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"Datumsfilter (JJJJ oder JJJJ-MM oder JJJJ-MM-TT)"}],"responses":{"200":{"description":"Domänenspezifische Statistiken mit Aufschlüsselung der Geltungsbereiche","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"totalRequests":{"type":"number","description":"Gesamtzahl der Anfragen für diesen Bereich"},"walletRequests":{"type":"number","description":"Anzahl der bezahlten wallet-Anfragen für diese Domain"},"subscriptionRequests":{"type":"number","description":"Anzahl der Abonnementanträge für diese Domäne"},"errorRequests":{"type":"number","description":"Anzahl der Fehlerabfragen für diese Domäne"},"walletAmount":{"type":"number","description":"Gesamtbetrag, der über die wallet für diese Domain ausgegeben wurde"},"ip":{"type":"array","description":"Array mit eindeutigen IP-Adressen für diese Domäne","items":{"type":"string"}},"totalIps":{"type":"integer","description":"Anzahl der eindeutigen IP-Adressen für diese Domäne"},"totalScopes":{"type":"integer","description":"Anzahl der Geltungsbereiche für diesen Bereich"},"scopes":{"type":"object","description":"Objekt, bei dem jeder Schlüssel ein Bereichsbezeichner ist und der Wert Statistiken für diesen Bereich enthält","additionalProperties":{"type":"object","properties":{"totalRequests":{"type":"number"},"walletRequests":{"type":"number"},"subscriptionRequests":{"type":"number"},"errorRequests":{"type":"number"},"walletAmount":{"type":"number"},"ip":{"type":"array","items":{"type":"string"}}}}}}}}},"example":{"data":{"totalRequests":500,"walletRequests":300,"subscriptionRequests":200,"errorRequests":5,"walletAmount":45.5,"ip":["192.168.1.1","10.0.0.5"],"totalIps":2,"totalScopes":15,"scopes":{"POST:company.openapi.com/endpoint":{"totalRequests":250,"walletRequests":150,"subscriptionRequests":100,"errorRequests":2,"walletAmount":22.75,"ip":["192.168.1.1"]},"GET:company.openapi.com/endpoint":{"totalRequests":250,"walletRequests":150,"subscriptionRequests":100,"errorRequests":3,"walletAmount":22.75,"ip":["10.0.0.5"]}}}}}}},"422":{"description":"Ungültiges Datumsformat","content":{"application/json":{"example":{"success":false,"message":"Invalid date format, must be YYYY or YYYY-MM or YYYY-MM-DD","error":240,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/subscriptions":{"get":{"summary":"Auflisten von Abonnements oder Abrufen von Abonnements nach ID","tags":["Subscriptions"],"parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string"},"description":"Abonnement-ID, um ein bestimmtes Abonnement abzurufen"},{"name":"scopes","in":"query","required":false,"schema":{"type":"string"},"description":"Durch Kommata getrennte Liste von Bereichen zum Filtern von Abonnements"},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0},"description":"Anzahl der zu überspringenden Abonnements für die Paginierung"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"maximum":100},"description":"Maximale Anzahl der zurückzuschickenden Abonnements"}],"responses":{"200":{"description":"Abonnement(e) info","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionListElement"}},{"$ref":"#/components/schemas/Subscription"}]}}},"examples":{"list":{"summary":"Liste der Abonnements","value":{"data":[{"id":"656d1e2f8b3c2a001f7e4a20","scope":"GET:company.openapi.com/resource","active":true,"availableRequests":"950","startsAt":"2025-11-01T00:00:00+00:00","expiresAt":"2025-12-01T00:00:00+00:00"},{"id":"656d1e2f8b3c2a001f7e4a21","scope":"POST:sms.openapi.com/send","active":true,"availableRequests":"800","startsAt":"2025-11-15T00:00:00+00:00","expiresAt":"2026-11-15T00:00:00+00:00"}]}},"detail":{"summary":"Einzelabonnement Detail","value":{"data":{"id":"656d1e2f8b3c2a001f7e4a20","scope":"GET:company.openapi.com/resource","domain":"company.openapi.com","active":true,"startsAt":"2025-11-01T00:00:00+00:00","expiresAt":"2025-12-01T00:00:00+00:00","totalRequests":"1000","availableRequests":"950","pricePerRequest":0.01,"type":"monthly","autorenew":true,"createdAt":"2025-10-25T10:00:00+00:00","updatedAt":"2025-11-19T15:30:00+00:00","price":10}}}}}}},"400":{"description":"Abfragefehler","content":{"application/json":{"example":{"success":false,"message":"Query error","error":230,"data":null}}}},"404":{"description":"Abonnement nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Subscription not found","error":220,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/scopes/{id}":{"get":{"summary":"Bereich nach ID abrufen","tags":["Scopes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Umfang ID"}],"responses":{"200":{"description":"Umfang Detail","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ScopeDetail"},"success":{"type":"boolean","example":true},"message":{"type":"string","example":""},"error":{"nullable":true,"example":null}},"required":["data","success","message","error"]},"example":{"data":{"id":"682c9f5a51671f7ef264c4fd","scope":"GET:company.openapi.com/CH-start","method":"GET","endpoint":"CH-start","domain":"company.openapi.com","enabled":false,"rateLimit":false,"freeLimits":{"dayLimit":0,"monthLimit":false,"yearLimit":false,"totalLimit":false},"requirements":{"id_card":false,"oa_general_contract":false},"prices":{"ch-start":0.06}},"success":true,"message":"","error":null}}}},"404":{"description":"Bereich nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Scope not found","error":10,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/callbacks/{id}":{"get":{"summary":"Rückruf nach ID abrufen","tags":["Callbacks"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Rückruf-ID"}],"responses":{"200":{"description":"Rückruf Detail","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Callback"}}},"example":{"data":{"id":"65a1b2c3d4e5f6789abcdef0","scope":"POST:company.openapi.com/webhook","domain":"company.openapi.com","active":false,"startedAt":"2026-02-12T10:00:00+00:00","createdAt":"2026-02-12T09:59:55+00:00","completedAt":"2026-02-12T10:00:05+00:00","httpResponseCode":200,"data":{"event":"user.created","userId":"12345"},"custom":{"trackingId":"abc-123"},"headers":{"Content-Type":"application/json","X-Webhook-Signature":"sha256=..."},"elapsedTime":5234,"attempt":1,"retry":0,"field":"webhookUrl","method":"POST","url":"https://example.com/callback"}}}}},"404":{"description":"Rückruf nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Callback not found","error":200,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}},"/wallet/transactions":{"get":{"summary":"Historie der wallet-Transaktionen abrufen","tags":["Wallet"],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0},"description":"Anzahl der zu überspringenden Transaktionen für die Paginierung"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"maximum":100},"description":"Maximale Anzahl der zurückzugebenden Transaktionen"}],"responses":{"200":{"description":"Liste der wallet-Transaktionen","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WalletTransaction"}}}},"example":{"data":[{"id":"txn_65a1b2c3d4e5f6789abc001","amount":-15.5,"createdAt":"2026-02-12T08:30:00+00:00","description":"API-Nutzung - company.openapi.com"},{"id":"txn_65a1b2c3d4e5f6789abc002","amount":100,"createdAt":"2026-02-10T14:15:00+00:00","description":"Wallet aufladen"},{"id":"txn_65a1b2c3d4e5f6789abc003","amount":-5.25,"createdAt":"2026-02-09T11:20:00+00:00","description":"API-Verwendung - sms.openapi.com"}]}}}}},"security":[{"Basic-Authentication":[]}]}},"/subscriptions/{id}":{"get":{"summary":"Abonnement nach ID abrufen","tags":["Subscriptions"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Abonnement-ID"}],"responses":{"200":{"description":"Details zum Abonnement","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Subscription"}}},"example":{"data":{"id":"656d1e2f8b3c2a001f7e4a20","scope":"GET:company.openapi.com/resource","domain":"company.openapi.com","active":true,"startsAt":"2025-11-01T00:00:00+00:00","expiresAt":"2025-12-01T00:00:00+00:00","totalRequests":"1000","availableRequests":"950","pricePerRequest":0.01,"type":"monthly","autorenew":true,"createdAt":"2025-10-25T10:00:00+00:00","updatedAt":"2025-11-19T15:30:00+00:00","price":10}}}}},"404":{"description":"Abonnement nicht gefunden","content":{"application/json":{"example":{"success":false,"message":"Subscription not found","error":220,"data":null}}}}},"security":[{"Basic-Authentication":[]}]}}},"components":{"securitySchemes":{"Basic-Authentication":{"description":"Grundlegende Authentifizierung mit EMAIL und APIKEY. Verwenden Sie den API-Schlüssel als Passwort und die mit dem API-Schlüssel verknüpfte E-Mail als Benutzernamen im Autorisierungs-Header.","name":"Authorization","type":"http","scheme":"basic"},"Refresh-Authentication":{"description":"Bearer-Token-Authentifizierung. Verwenden Sie ein Refresh-Token als Bearer-Token im Authorization-Header nur für den Endpunkt PATCH /tokens/{id}, um ein Token mit seinem Refresh-Token anstelle des Access-Tokens zu aktualisieren.","type":"http","scheme":"bearer"}},"schemas":{"TokenListOrDetail":{"type":"object","properties":{"data":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/TokenDetail"}},{"$ref":"#/components/schemas/TokenDetail"}]}}},"TokenDetail":{"type":"object","properties":{"token":{"type":"string","description":"Eindeutiger Token-Bezeichner","example":"656d1e2f8b3c2a001f7e4a12"},"name":{"type":"string","description":"Von Menschen lesbarer Token-Name","example":"Service X API token"},"createdAt":{"type":"string","format":"date-time","description":"Zeitstempel der Erstellung","example":"2025-11-19T10:00:00Z"},"expireAt":{"type":"string","format":"date-time","description":"Zeitstempel des Verfalls","example":"2025-12-19T10:00:00Z"},"updatedAt":{"type":"string","format":"date-time","description":"Zeitstempel der letzten Aktualisierung","example":"2025-11-20T09:00:00Z"},"scopes":{"type":"array","items":{"type":"string"},"description":"Assoziierte Geltungsbereiche","example":["GET:api.openapi.com/resource"]},"refreshToken":{"type":"string","description":"Zugehöriges Aktualisierungs-Token. Wird verwendet, um die TTL des Tokens zu verlängern","example":"656d1e2f8b3c2a001f7e4a13"},"limits":{"$ref":"#/components/schemas/TokenLimits"},"stats":{"$ref":"#/components/schemas/TokenStats"}}},"TokenCreate":{"type":"object","description":"Daten zur Erstellung eines neuen Tokens","properties":{"scopes":{"type":"array","description":"Liste der beantragten Geltungsbereiche","items":{"type":"string","example":"GET:api.openapi.com/resource"},"example":["GET:api.openapi.com/resource","POST:other.openapi.com/other"]},"name":{"type":"string","description":"Vom Menschen lesbarer Token-Name","example":"Service X API token"},"ttl":{"type":"integer","description":"Lebensdauer des Tokens in Sekunden. Maximal 1 Jahr. Wenn ein negativer Wert oder 0 angegeben wird, wird der Wert automatisch auf die Standard-TTL geklemmt.","example":2592000},"limits":{"$ref":"#/components/schemas/TokenLimits"}},"required":["scopes"]},"TokenUpdate":{"type":"object","description":"Daten zur Aktualisierung eines vorhandenen Tokens. Die Authentifizierung kann ein Bearer-Zugriffstoken oder alternativ ein Refresh-Token verwenden, das als Bearer-Token im Authorization-Header übergeben wird. Bei der Verwendung eines Refresh-Tokens werden ein neues Token und ein neues Refresh-Token mit denselben Gültigkeitsbereichen zurückgegeben, und das vorherige Token wird gelöscht.","properties":{"scopes":{"type":"array","description":"Neue Liste der Geltungsbereiche","items":{"type":"string","example":"GET:api.openapi.com/resource"},"example":["GET:api.openapi.com/resource","POST:other.openapi.com/other"]},"name":{"type":"string","description":"Neuer Token-Name","example":"Updated token"},"ttl":{"type":"integer","description":"Neue Lebensdauer in Sekunden","example":604800},"limits":{"$ref":"#/components/schemas/TokenLimits"}}},"TokenLimits":{"type":"object","description":"Mit dem Token verbundene Verwendungsbeschränkungen","properties":{"totalRequests":{"type":"integer","description":"Maximale Anzahl der insgesamt zulässigen Anfragen","example":10000},"walletRequests":{"type":"integer","description":"Maximal zulässige Anzahl von bezahlten Wallet-Anfragen","example":1000},"subscriptionRequests":{"type":"integer","description":"Maximal zulässige Anzahl von Abonnementanfragen","example":500},"walletAmount":{"type":"number","description":"Maximal nutzbarer Betrag aus der zugehörigen wallet","example":50},"ip":{"type":"array","description":"Liste der zulässigen IP-Adressen","items":{"type":"string","example":"192.168.1.1"},"example":["192.168.1.1","10.0.0.2"]}}},"TokenStats":{"type":"object","description":"Benutzungsstatistiken für das Token","properties":{"totalRequests":{"type":"integer","description":"Gesamtzahl der gestellten Anträge","example":1234},"walletRequests":{"type":"integer","description":"Anzahl der bezahlten Wallet-Anfragen","example":120},"subscriptionRequests":{"type":"integer","description":"Anzahl der gestellten Zeichnungsanträge","example":30},"errorRequests":{"type":"integer","description":"Anzahl der Anfragen, die zu einem Fehler führten","example":5},"walletAmount":{"type":"number","description":"Gesamtbetrag der Ausgaben über wallet","example":12.5},"ip":{"type":"array","description":"Liste der verwendeten IP-Adressen","items":{"type":"string","example":"192.168.1.1"},"example":["192.168.1.1","10.0.0.2"]}}},"UserScope":{"type":"object","description":"Grundlegende Informationen zum Geltungsbereich in der Listenansicht verfügbar","properties":{"id":{"type":"string","description":"Eindeutige Kennung des Bereichs","example":"656d1e2f8b3c2a001f7e4a14"},"scope":{"type":"string","description":"Name des Geltungsbereichs","example":"GET:api.openapi.com/resource"},"method":{"type":"string","description":"HTTP-Methode","example":"GET"},"endpoint":{"type":"string","description":"Zugehöriger Endpunkt","example":"resource"},"domain":{"type":"string","description":"Assoziierter Bereich","example":"api.openapi.com"},"enabled":{"type":"boolean","description":"Ob dieser Bereich für den authentifizierten Benutzer aktiviert ist","example":true}}},"ScopeDetail":{"type":"object","description":"Detaillierte Informationen zum Umfang, einschließlich Grenzen, Anforderungen und Preisen","allOf":[{"$ref":"#/components/schemas/UserScope"},{"type":"object","properties":{"rateLimit":{"oneOf":[{"type":"string"},{"type":"boolean"}],"description":"Ratenlimit für diesen Bereich, oder false, wenn kein Limit","example":false},"freeLimits":{"$ref":"#/components/schemas/ScopeLimits"},"requirements":{"type":"object","description":"Anforderungen für diesen Bereich mit ihrem Erfüllungsstatus","additionalProperties":{"type":"boolean"},"example":{"id_card":false,"oa_general_contract":false}},"prices":{"type":"object","description":"Preisinformationen für diesen Bereich nach Preisschlüssel","additionalProperties":{"type":"number"},"example":{"ch-start":0.06}}}}]},"ScopeLimits":{"type":"object","description":"Freie Nutzungsgrenzen für einen Bereich","properties":{"dayLimit":{"oneOf":[{"type":"integer"},{"type":"boolean"}],"description":"Tägliches Anfragelimit, oder false, wenn kein Limit","example":0},"monthLimit":{"oneOf":[{"type":"integer"},{"type":"boolean"}],"description":"Monatliches Antragslimit, oder false, wenn kein Limit","example":false},"yearLimit":{"oneOf":[{"type":"integer"},{"type":"boolean"}],"description":"Jährliches Antragslimit, oder false, wenn kein Limit","example":false},"totalLimit":{"oneOf":[{"type":"integer"},{"type":"boolean"}],"description":"Gesamtanforderungslimit (Lebensdauer), oder false, wenn kein Limit","example":false}}},"ErrorLog":{"type":"object","description":"Eintrag im Fehlerprotokoll","properties":{"id":{"type":"string","description":"Eindeutige Kennung des Fehlerprotokolls","example":"69822d1d48be79971b04351a"},"scope":{"type":"string","description":"Bereich, der den Fehler verursacht hat","example":"DELETE:oauth.openapi.com/tokens"},"domain":{"type":"string","description":"API-Domäne, in der der Fehler aufgetreten ist","example":"oauth.openapi.com"},"errorAt":{"type":"string","format":"date-time","description":"Zeitstempel, als der Fehler auftrat","example":"2026-02-03T17:15:09+00:00"},"httpResponseCode":{"type":"integer","description":"HTTP-Antwort-Statuscode","example":404},"errorCode":{"type":"number","description":"Interner Fehlercode","example":131},"message":{"type":"string","description":"Fehlermeldung","example":"Not Found"},"ip":{"type":"string","description":"IP-Adresse, die den Fehler ausgelöst hat","example":"93.146.69.125"}}},"Wallet":{"type":"object","description":"Informationen zur wallet","properties":{"credit":{"type":"number","description":"Aktuelles Guthaben in der wallet","example":125.5},"createdAt":{"type":"string","format":"date-time","description":"Datum der Erstellung des Wallets","example":"2025-01-15T10:00:00+00:00"},"updatedAt":{"type":"string","format":"date-time","description":"Datum der letzten Aktualisierung der wallet","example":"2026-02-12T08:30:00+00:00"}}},"WalletTransaction":{"type":"object","description":"Wallet-Transaktionseintrag","properties":{"id":{"type":"string","description":"Eindeutige Kennung des Vorgangs","example":"txn_65a1b2c3d4e5f6789abc001"},"amount":{"type":"number","description":"Transaktionsbetrag (negativ für Ausgaben, positiv für Einnahmen)","example":-15.5},"createdAt":{"type":"string","format":"date-time","description":"Zeitstempel der Transaktion","example":"2026-02-12T08:30:00+00:00"},"description":{"type":"string","description":"Beschreibung des Vorgangs","example":"API usage - company.openapi.com"}}},"CallbackListElement":{"type":"object","description":"Vereinfachte Callback-Informationen für die Listenansicht","properties":{"id":{"type":"string","description":"Eindeutige Kennung des Rückrufs","example":"65a1b2c3d4e5f6789abcdef0"},"scope":{"type":"string","description":"Bereich, der diesen Rückruf ausgelöst hat","example":"POST:company.openapi.com/webhook"},"url":{"type":"string","description":"Ziel-URL des Rückrufs","example":"https://example.com/callback"},"httpResponseCode":{"type":"string","description":"Von der Rückruf-URL empfangener HTTP-Antwortcode","example":"200"},"startedAt":{"type":"string","format":"date-time","description":"Startzeit für die Ausführung des Rückrufs","example":"2026-02-12T10:00:00+00:00"},"completedAt":{"type":"string","format":"date-time","description":"Abschlusszeitpunkt der Rückrufausführung (null, wenn noch aktiv)","example":"2026-02-12T10:00:05+00:00","nullable":true}}},"Callback":{"type":"object","description":"Vollständige Rückrufinformationen","properties":{"id":{"type":"string","description":"Eindeutige Kennung des Rückrufs","example":"65a1b2c3d4e5f6789abcdef0"},"scope":{"type":"string","description":"Bereich, der diesen Rückruf ausgelöst hat","example":"POST:company.openapi.com/webhook"},"domain":{"type":"string","description":"API-Bereich für diesen Rückruf","example":"company.openapi.com","nullable":true},"active":{"type":"boolean","description":"Ob der Rückruf noch aktiv ist (nicht abgeschlossen)","example":false},"startedAt":{"type":"string","format":"date-time","description":"Startzeit für die Ausführung des Rückrufs","example":"2026-02-12T10:00:00+00:00"},"createdAt":{"type":"string","format":"date-time","description":"Erstellungszeit des Rückrufs","example":"2026-02-12T09:59:55+00:00"},"completedAt":{"type":"string","format":"date-time","description":"Zeit für die Ausführung des Rückrufs","example":"2026-02-12T10:00:05+00:00","nullable":true},"httpResponseCode":{"type":"integer","description":"Von der Rückruf-URL empfangener HTTP-Antwortcode","example":200},"data":{"type":"object","description":"Rückruf-Payload-Daten","example":{"event":"user.created","userId":"12345"}},"custom":{"description":"Benutzerdefinierte Daten im Zusammenhang mit dem Rückruf","example":{"trackingId":"abc-123"}},"headers":{"type":"object","description":"Mit dem Rückruf gesendete HTTP-Header","example":{"Content-Type":"application/json","X-Webhook-Signature":"sha256=..."}},"elapsedTime":{"type":"integer","description":"Ausführungszeit des Rückrufs in Millisekunden","example":5234},"attempt":{"type":"integer","description":"Aktuelle Versuchsnummer","example":1},"retry":{"type":"integer","description":"Anzahl der durchgeführten Wiederholungsversuche","example":0},"field":{"type":"string","description":"Feldbezeichner für den Rückruf","example":"webhookUrl"},"method":{"type":"string","description":"Für den Rückruf verwendete HTTP-Methode","example":"POST"},"url":{"type":"string","description":"Ziel-URL des Rückrufs","example":"https://example.com/callback"}}},"SubscriptionListElement":{"type":"object","description":"Vereinfachte Abonnementinformationen für die Listenansicht","properties":{"id":{"type":"string","description":"Eindeutige Kennung des Abonnements","example":"656d1e2f8b3c2a001f7e4a20"},"scope":{"type":"string","description":"Geltungsbereich: Dieses Abonnement gilt für","example":"GET:company.openapi.com/resource"},"active":{"type":"boolean","description":"Ob das Abonnement derzeit aktiv ist","example":true},"availableRequests":{"type":"string","description":"Anzahl der in diesem Abonnement verfügbaren Anfragen","example":"950"},"startsAt":{"type":"string","format":"date-time","description":"Datum des Abonnementbeginns","example":"2025-11-01T00:00:00+00:00"},"expiresAt":{"type":"string","format":"date-time","description":"Ablaufdatum des Abonnements","example":"2025-12-01T00:00:00+00:00"}}},"Subscription":{"type":"object","description":"Vollständige Informationen zum Abonnement","properties":{"id":{"type":"string","description":"Eindeutige Kennung des Abonnements","example":"656d1e2f8b3c2a001f7e4a20"},"scope":{"type":"string","description":"Geltungsbereich: Dieses Abonnement gilt für","example":"GET:company.openapi.com/resource"},"domain":{"type":"string","description":"API-Domäne für dieses Abonnement","example":"company.openapi.com"},"active":{"type":"boolean","description":"Ob das Abonnement derzeit aktiv ist","example":true},"startsAt":{"type":"string","format":"date-time","description":"Datum des Abonnementbeginns","example":"2025-11-01T00:00:00+00:00"},"expiresAt":{"type":"string","format":"date-time","description":"Ablaufdatum des Abonnements","example":"2025-12-01T00:00:00+00:00"},"totalRequests":{"type":"string","description":"Gesamtzahl der ursprünglich in diesem Abonnement enthaltenen Anfragen","example":"1000"},"availableRequests":{"type":"string","description":"Anzahl der noch verfügbaren Anfragen in diesem Abonnement","example":"950"},"pricePerRequest":{"type":"number","description":"Preis pro Anfrage für dieses Abonnement","example":0.01},"type":{"type":"string","description":"Art des Abonnements (z. B. Monat, Jahr)","example":"month"},"autorenew":{"type":"boolean","description":"Ob das Abonnement automatisch verlängert wird","example":true},"createdAt":{"type":"string","format":"date-time","description":"Datum der Erstellung des Abonnements","example":"2025-10-25T10:00:00+00:00"},"updatedAt":{"type":"string","format":"date-time","description":"Datum der letzten Aktualisierung","example":"2025-11-19T15:30:00+00:00"},"price":{"type":"number","description":"Gesamtpreis des Abonnements","example":10}}}}},"externalDocs":{"description":"Zum ersten Mal hier? Generieren Sie ein neues Zugangstoken","url":"https://console.openapi.com/de/oauth"}}