Stable Pro

Stable Pro API · v1

Endpunkte und Objekte

Jeder Endpunkt mit seiner Berechtigung, seinen Parametern und seiner Antwort, und jedes Objekt mit seinen Feldern. Aus dem OpenAPI-Vertrag generiert.

Feldnamen, Codes und Werte sind der Vertrag: Sie sind in jeder Sprache gleich. Die Beschreibungen sind übersetzt.

Endpunkte

GET/api/v1/connection

Die Verbindung des aufrufenden Schlüssels: Name, Berechtigungen und der Schlüssel selbst (nie das Geheimnis)

Berechtigung
jeder gültige Schlüssel
Parameter
lang
Antwort
Connection
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/codes

Das Wörterbuch aller Codes, die die API liefert, mit Namen in der angefragten Sprache (?lang=, Accept-Language)

Berechtigung
jeder gültige Schlüssel
Parameter
lang
Antwort
Codes
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/organization

Der Stall des aufrufenden Schlüssels: Name, Land, Währung, Zeitzone, Sprache, ob Stable Pro Steuern berechnet

Berechtigung
jeder gültige Schlüssel
Parameter
lang
Antwort
Organization
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/customers

Alle mit mindestens einer Belastung, bezahlt oder nicht, Mitglied oder Mitarbeiter; mit customers.fiscal:read auch die Rechnungsdaten

Berechtigung
customers:read
Parameter
langlimitstarting_after
Antwort
CustomerList
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/customers/{id}

Ein Kunde; mit customers.fiscal:read auch die Rechnungsdaten. Nicht von diesem Stall: 404

Berechtigung
customers:read
Parameter
id (im Pfad)lang
Antwort
Customer
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/customers/{id}/balance

Was der Kunde heute schuldet, was später kommt, und das Guthaben, das er verwenden kann

Berechtigung
charges:read
Parameter
id (im Pfad)lang
Antwort
Balance
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/charges

Alle Belastungen an die Kunden, bezahlt oder nicht (nie die Vergütungen der Mitarbeitenden)

Berechtigung
charges:read
Parameter
langlimitstarting_after
Filter
  • customer — Nur dieser Kunde (seine ID)
  • accounting_month — Nur dieser Buchungsmonat (YYYY-MM): der Monat, in dem der Vorgang zählt, siehe Konventionen
Antwort
ChargeList
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/charges/{id}

Eine Belastung, wie sie jetzt ist: Betrag und Steuern sind die Entstehung plus Korrekturen plus Steueränderungen

Berechtigung
charges:read
Parameter
id (im Pfad)lang
Antwort
Charge
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/adjustments

Korrekturen von Belastungen

Berechtigung
charges:read
Parameter
langlimitstarting_after
Filter
  • charge — Nur die Korrekturen dieser Belastung (ihre ID)
  • accounting_month — Nur dieser Buchungsmonat (YYYY-MM): der Monat, in dem der Vorgang zählt, siehe Konventionen
Antwort
AdjustmentList
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/adjustments/{id}

Eine Korrektur: action, reason, category, Betrag mit Vorzeichen, consideration_effect, die Steuerdifferenz

Berechtigung
charges:read
Parameter
id (im Pfad)lang
Antwort
Adjustment
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/payments

Geldbewegungen der Kunden (Zahlungen, Erstattungen, Stornierungen, verwendetes Guthaben)

Berechtigung
payments:read
Parameter
langlimitstarting_after
Filter
  • customer — Nur dieser Kunde (seine ID)
Antwort
PaymentList
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/payments/{id}

Eine Geldbewegung, mit ihren Zuordnungen; wer für den Kunden bezahlt hat

Berechtigung
payments:read
Parameter
id (im Pfad)lang
Antwort
Payment
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/allocations/{id}

Wie viel einer Bewegung auf eine Belastung entfällt, mit Vorzeichen

Berechtigung
payments:read
Parameter
id (im Pfad)lang
Antwort
Allocation
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/credit-entries

Bewegungen des Kundenguthabens (entstanden, erhöht, verwendet, erstattet)

Berechtigung
payments:read
Parameter
langlimitstarting_after
Filter
  • customer — Nur dieser Kunde (seine ID)
Antwort
CreditEntryList
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/credit-entries/{id}

Eine Bewegung des Guthabens eines Kunden

Berechtigung
payments:read
Parameter
id (im Pfad)lang
Antwort
CreditEntry
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/receipts

Quittungen von Stable Pro (R: Zahlungsquittungen, RB: Erstattungsbestätigungen), in der Reihenfolge der Ausstellung; nie Steuerdokumente

Berechtigung
receipts:read
Parameter
langlimitstarting_after
Filter
  • customer — Nur dieser Kunde (seine ID)
  • payment — Nur die Quittungen dieser Geldbewegung (ihre ID)
Antwort
ReceiptList
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/receipts/{id}

Eine Quittung: Art, die Nummer wie gedruckt, Status, die Zahlung, die sie bestätigt, der festgeschriebene Betrag

Berechtigung
receipts:read
Parameter
id (im Pfad)lang
Antwort
Receipt
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/receipts/{id}/pdf

Das PDF der Quittung, dasselbe, das der Kunde erhalten hat. Enthält es die Steuerdaten dessen, der für den Kunden bezahlt hat, braucht es auch customers.fiscal:read (sonst 403)

Berechtigung
receipts:read
Parameter
id (im Pfad)lang
Antwort
application/pdf
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/events

Was geschehen ist, in Reihenfolge: Lesen Sie ab Ihrem Cursor, um synchron zu bleiben. Jedes Ereignis braucht die Berechtigung des Objekts, auf das es verweist. Während die Geschichte des Stalls geladen wird: 503 events-not-ready

Berechtigung
jeder gültige Schlüssel
Parameter
langlimitafter
Antwort
EventList
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503
GET/api/v1/events/{id}

Ein Ereignis. Von einem anderen Stall oder eines Typs, den Ihr Schlüssel nicht liest: 404

Berechtigung
jeder gültige Schlüssel
Parameter
id (im Pfad)lang
Antwort
Event
Fehler
400 · 401 · 403 · 404 · 429 · 500 · 503

Objekte

Problem

FeldTypBeschreibung
typestring (uri)Stabil, auf Englisch: Entscheiden Sie danach, nicht nach dem Text
titlestringAuf Englisch
statusinteger
detailstring · optionalEin Satz für Menschen, in der angefragten Sprache (?lang=, Accept-Language)
reasonstring · optional
missing · malformed · wrong_environment · unknown · connection_revoked · revoked · expired · rotated
Nur 401: warum der Schlüssel ungültig ist
missing_permissionstring · optional
charges:read · payments:read · receipts:read · customers:read · customers.fiscal:read · external-documents:write
Nur 403 forbidden
invalid_paramstring · optionalNur 400: der ungültige Parameter

Connection

FeldTypBeschreibung
object"connection"
idstring (uuid)
namestring
permissionsArray von string
created_atstring (date-time)RFC 3339, UTC
keyobject
key.idstring (uuid)
key.last_fourstring
key.environmentstring
live · test
live = Produktion (sp_live_), test = Staging (sp_test_)
key.created_atstring (date-time)RFC 3339, UTC
key.expires_atstring (date-time) · kann null seinRFC 3339, UTC
key.retires_atstring (date-time) · kann null seinNach einer Rotation: wann dieser Schlüssel nicht mehr funktioniert

Organization

FeldTypBeschreibung
object"organization"
idstring (uuid)
namestring
legal_namestring · kann null sein
countrystring · kann null seinISO 3166-1 alpha-2
currencystringISO 4217
timezonestringIANA
languagestringDie Sprache des Stalls: Stable Pro kennt die Sprache der einzelnen Kunden nicht
localestringBCP 47, für die Formatierung
taxesobject
taxes.calculated_bystring
stable_pro · external
external = Stable Pro berechnet in diesem Monat keine Steuern: nicht mehr
taxes.amount_basis"gross"Jeder Betrag ist der Gesamtbetrag, den der Kunde zahlt
receipts_shown_to_customersbooleanfalse: Der Stall hat gewählt, seinen Kunden keine Quittungen von Stable Pro zu geben, solange ein Programm verbunden ist; sie existieren trotzdem und sind nummeriert (GET /receipts)

Customer

FeldTypBeschreibung
object"customer"
idstring (uuid)Die Kundenkennung: Sie ändert sich nie
kindstring
member · staff
namestring
given_namestring · kann null sein
family_namestring · kann null sein
activebooleanfalse: hat den Stall verlassen oder wurde entfernt; seine Belastungen können weiterhin in Rechnung gestellt werden
created_atstring (date-time)RFC 3339, UTC
billing_addressobject · kann null sein · optionalNur mit customers.fiscal:read
billing_address.line1string · kann null sein
billing_address.line2string · kann null sein
billing_address.postal_codestring · kann null sein
billing_address.citystring · kann null sein
billing_address.subdivisionstring · kann null seinISO 3166-2 (IT-MI, US-OH)
billing_address.countrystring · kann null seinISO 3166-1 alpha-2
billing_address_textstring · kann null sein · optionalNur mit customers.fiscal:read: die alte Freitext-Adresse, nur solange billing_address leer ist
tax_identifiersArray von object · optionalNur mit customers.fiscal:read
tax_identifiers[].schemestringVAT, oder ein ICD nach ISO 6523 (0210 italienische Steuernummer, 0211 italienische USt-IdNr.)
tax_identifiers[].valuestring
tax_codestring · kann null sein · optionalNur mit customers.fiscal:read: die alte Steuernummer, ohne Schema

CustomerList

FeldTypBeschreibung
object"list"
dataArray von Customer
has_morebooleanEs gibt eine nächste Seite: Fragen Sie erneut mit starting_after = die ID des letzten Elements

Balance

FeldTypBeschreibung
object"balance"
customer_idstring (uuid)
currencystring
amount_dueintegerWas heute fällig ist: bereits sichtbare Belastungen
amount_scheduledintegerBelastungen, die später sichtbar werden
creditintegerGuthaben, das für eine Belastung verwendet werden kann
as_ofstring (date)Heute, in der Zeitzone des Stalls

Charge

FeldTypBeschreibung
object"charge"
idstring (uuid)
customer_idstring (uuid)
typestringOffene Liste: boarding, service_charge, lesson_drop_in, lesson_plan, health_record, …
descriptionstringSo, wie der Stall es geschrieben hat
period_startstring (date)YYYY-MM-DD
period_endstring (date)YYYY-MM-DD
competence_monthstringYYYY-MM
accounting_monthstringDer spätere aus Leistungs- und Erfassungsmonat: von Stable Pro berechnet
due_datestring (date)YYYY-MM-DD
visible_fromstring (date)YYYY-MM-DD
quantity"1"
unitstring
MON · ANN · C62
UNECE Rec. 20
unit_amountintegerKleinste Einheiten der Währung (ISO 4217)
currencystring
original_amountintegerBei der Entstehung
amountintegerJetzt: Entstehung plus Korrekturen
amount_paidintegerKleinste Einheiten der Währung (ISO 4217)
amount_remainingintegerKleinste Einheiten der Währung (ISO 4217)
amount_basis"gross"
tax_calculated_bystring
stable_pro · external
tax_treatmentstring
standard_rated · zero_rated · not_calculated · undetermined
taxable_amountintegerKleinste Einheiten der Währung (ISO 4217)
taxesArray von object
taxes[].type"vat"Offene Liste: Weitere Typen können hinzukommen
taxes[].jurisdictionstring · kann null seinISO 3166-1 alpha-2 des Stalls
taxes[].categorystring · kann null seinUNCL 5305: S, Z, E, AE, K, G, O; null, wenn nicht angegeben
taxes[].rate_bpintegerBasispunkte: 2200 = 22 %
taxes[].amountintegerKleinste Einheiten der Währung
taxes[].exemption_reasonstring · kann null sein · optionalBT-120, nur bei Nullsatz
taxes[].exemption_reason_codestring · kann null sein · optionalVATEX (BT-121), nur bei Nullsatz
created_atstring (date-time)RFC 3339, UTC

ChargeList

FeldTypBeschreibung
object"list"
dataArray von Charge
has_morebooleanEs gibt eine nächste Seite: Fragen Sie erneut mit starting_after = die ID des letzten Elements

Adjustment

FeldTypBeschreibung
object"adjustment"
idstring (uuid)
charge_idstring (uuid)
customer_idstring (uuid)
direction"receivable"
actionstring · kann null seinOffene Liste von Codes (siehe /codes)
reasonstring · kann null sein
categorystring · kann null sein
originstring · kann null seinHUMAN, SYSTEM, …
amountintegerMit Vorzeichen: negativ senkt die Belastung
consideration_effectstring
changes · none
changes: Es folgt eine Gutschrift (oder Nachbelastung); none: ein Forderungsausfall, ohne Steuer
taxesArray von objectBei changes: die Steuerdifferenz, bereits berechnet. Bei none: leer
taxes[].type"vat"Offene Liste: Weitere Typen können hinzukommen
taxes[].jurisdictionstring · kann null seinISO 3166-1 alpha-2 des Stalls
taxes[].categorystring · kann null seinUNCL 5305: S, Z, E, AE, K, G, O; null, wenn nicht angegeben
taxes[].rate_bpintegerBasispunkte: 2200 = 22 %
taxes[].amountintegerKleinste Einheiten der Währung
taxes[].exemption_reasonstring · kann null sein · optionalBT-120, nur bei Nullsatz
taxes[].exemption_reason_codestring · kann null sein · optionalVATEX (BT-121), nur bei Nullsatz
taxable_amountinteger · kann null seinKleinste Einheiten der Währung (ISO 4217)
currencystring
competence_monthstringYYYY-MM
accounting_monthstringYYYY-MM
occurred_atstring (date-time)RFC 3339, UTC
reverses_adjustment_idstring (uuid) · kann null sein
taxonomy_versioninteger

AdjustmentList

FeldTypBeschreibung
object"list"
dataArray von Adjustment
has_morebooleanEs gibt eine nächste Seite: Fragen Sie erneut mit starting_after = die ID des letzten Elements

Allocation

FeldTypBeschreibung
object"allocation"
idstring (uuid)
payment_idstring (uuid)
charge_idstring (uuid)
amountintegerMit Vorzeichen
currencystring · optional
consideration_effect"none"

Payment

FeldTypBeschreibung
object"payment"
idstring (uuid)
customer_idstring (uuid) · kann null sein
typestring
payment · credit_applied · offset · refund · moved_to_credit · reversal
Was mit dem Geld geschehen ist (offene Liste)
amountintegerDas Geld, das sich wirklich bewegt hat, mit Vorzeichen: Eine Erstattung oder Stornierung ist negativ, moved_to_credit ist null
currencystring
datestring (date)YYYY-MM-DD
accounting_monthstringYYYY-MM
methodstringcash, bank_transfer, pos, credit, compensazione, other (offene Liste)
referencestring · kann null sein
paid_byobject · kann null seinWer für den Kunden bezahlt hat (ein Elternteil): kein eigener Kunde
paid_by.kindstring · kann null sein
paid_by.namestring · kann null sein
paid_by.tax_codestring · kann null sein · optionalNur mit customers.fiscal:read
paid_by.address_textstring · kann null sein · optionalNur mit customers.fiscal:read
reverses_payment_idstring (uuid) · kann null sein
actionstring · kann null seinNur bei Stornierungen
reasonstring · kann null sein
categorystring · kann null sein
consideration_effect"none"
allocationsArray von Allocation
taxonomy_versioninteger · kann null sein
created_atstring (date-time)RFC 3339, UTC

PaymentList

FeldTypBeschreibung
object"list"
dataArray von Payment
has_morebooleanEs gibt eine nächste Seite: Fragen Sie erneut mit starting_after = die ID des letzten Elements

CreditEntry

FeldTypBeschreibung
object"credit_entry"
idstring (uuid)
customer_idstring (uuid)
directionstring
credit · debit
credit: Das Guthaben entsteht oder wächst; debit: Es wird verwendet oder erstattet
amountintegerImmer positiv: direction gibt die Richtung an
currencystring
sourcestringOffene Liste von Codes
payment_idstring (uuid) · kann null seinDie Bewegung, die es verursacht hat
charge_idstring (uuid) · kann null sein
actionstring · kann null sein
reasonstring · kann null sein
categorystring · kann null sein
reverses_entry_idstring (uuid) · kann null sein
consideration_effect"none"
created_atstring (date-time)RFC 3339, UTC

CreditEntryList

FeldTypBeschreibung
object"list"
dataArray von CreditEntry
has_morebooleanEs gibt eine nächste Seite: Fragen Sie erneut mit starting_after = die ID des letzten Elements

Receipt

FeldTypBeschreibung
object"receipt"
idstring (uuid)
kindstring
payment_receipt · refund_confirmation
payment_receipt: Serie R, Geld erhalten; refund_confirmation: Serie RB, Geld erstattet (offene Liste)
seriesstringR, RB (offene Liste): Jede Serie hat ihre eigene Nummernfolge
yearinteger
sequenceintegerFortlaufende Nummer innerhalb von Serie und Jahr, ohne Lücken
numberstringDie Nummer, wie sie auf dem Dokument gedruckt ist
statusstring
issued · voided
Eine stornierte Quittung bleibt bestehen, mit ihrer Nummer
issued_atstring (date-time)RFC 3339, UTC
voided_atstring (date-time) · kann null seinRFC 3339, UTC
operation_typestring · kann null seinNur bei Erstattungsbestätigungen: voluntary_refund, payment_reversal, chargeback (offene Liste)
payment_idstring (uuid) · kann null seinDie Zahlung oder die Erstattung, die die Quittung bestätigt
charge_idstring (uuid) · kann null seinNur Quittungen des alten Modells, die auf eine Belastung statt auf eine Zahlung ausgestellt wurden
customer_idstring (uuid) · kann null sein
amountinteger · kann null seinWie auf dem Dokument festgeschrieben, mit Vorzeichen: Eine Erstattungsbestätigung ist negativ
currencystring
pdf_availablebooleanfalse nur bei den ältesten Quittungen, ausgestellt vor den festgeschriebenen Dokumenten: kein Blatt zum erneuten Drucken
fiscal_document"false"Eine Zahlungsbestätigung: Das Steuerdokument stellt Ihr Programm aus

ReceiptList

FeldTypBeschreibung
object"list"
dataArray von Receipt
has_morebooleanEs gibt eine nächste Seite: Fragen Sie erneut mit starting_after = die ID des letzten Elements

Event

FeldTypBeschreibung
object"event"
idstring (uuid)Stabil, eindeutig über alle Ställe hinweg: Daran erkennen Sie ein bereits verarbeitetes Ereignis
typestringOffene Liste: customer.updated, charge.created, charge.due_date_changed, charge.tax_changed, adjustment.created, payment.created, allocation.created, credit_entry.created, receipt.issued, receipt.voided
dataobject
data.objectstringOffene Liste: customer, charge, adjustment, payment, allocation, credit_entry, receipt
data.idstring (uuid)
data.urlstringWo es zu lesen ist, ab dem Host: /api/v1/charges/{id}
occurred_atstring (date-time)Wann der Vorgang geschah: Zeitpunkt der Erstellung, Ausstellung oder Stornierung; bei einer Steueränderung ihre Erstellung
recorded_atstring (date-time)Wann das Ereignis geschrieben wurde: bei historischen Ereignissen der Tag, an dem die Geschichte geladen wurde
historicalbooleantrue: ein Vorgang aus der Zeit vor den Ereignissen, einmal geladen, nach seinem Datum geordnet

EventList

FeldTypBeschreibung
object"list"
dataArray von Event
has_morebooleanFragen Sie erneut mit after = next_cursor. Eine Seite kann weniger Ereignisse als limit enthalten, sogar keines, während has_more true ist
next_cursorstring (uuid) · kann null seinSpeichern Sie ihn nach der Verarbeitung der Seite und geben Sie ihn als after zurück. Er kann die ID eines Ereignisses sein, das Ihnen nicht angezeigt wird. null nur, wenn der Stall noch keine Ereignisse für Sie hat

Codes

FeldTypBeschreibung
object"codes"
languagestringDie Sprache der Namen: ?lang=, dann Accept-Language, dann en
taxonomy_versionintegerDie Taxonomie, aus der action, reason und category stammen
listsobject
lists.charge_typeobject
lists.charge_type.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.charge_type.codesArray von object
lists.charge_type.codes[].codestring
lists.charge_type.codes[].namestring
lists.actionobject
lists.action.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.action.codesArray von object
lists.action.codes[].codestring
lists.action.codes[].namestring
lists.reasonobject
lists.reason.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.reason.codesArray von object
lists.reason.codes[].codestring
lists.reason.codes[].namestring
lists.reason.codes[].actionstringDer Name eines reason hängt von seiner action ab: Schlagen Sie ihn mit beiden nach
lists.reason.codes[].categorystring
lists.categoryobject
lists.category.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.category.codesArray von object
lists.category.codes[].codestring
lists.category.codes[].namestring
lists.originobject
lists.origin.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.origin.codesArray von object
lists.origin.codes[].codestring
lists.origin.codes[].namestring
lists.payment_typeobject
lists.payment_type.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.payment_type.codesArray von object
lists.payment_type.codes[].codestring
lists.payment_type.codes[].namestring
lists.payment_methodobject
lists.payment_method.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.payment_method.codesArray von object
lists.payment_method.codes[].codestring
lists.payment_method.codes[].namestring
lists.credit_sourceobject
lists.credit_source.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.credit_source.codesArray von object
lists.credit_source.codes[].codestring
lists.credit_source.codes[].namestring
lists.receipt_kindobject
lists.receipt_kind.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.receipt_kind.codesArray von object
lists.receipt_kind.codes[].codestring
lists.receipt_kind.codes[].namestring
lists.refund_operationobject
lists.refund_operation.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.refund_operation.codesArray von object
lists.refund_operation.codes[].codestring
lists.refund_operation.codes[].namestring
lists.tax_categoryobjectUNCL 5305
lists.tax_category.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.tax_category.codesArray von object
lists.tax_category.codes[].codestring
lists.tax_category.codes[].namestring
lists.unitobjectUNECE Rec. 20
lists.unit.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.unit.codesArray von object
lists.unit.codes[].codestring
lists.unit.codes[].namestring
lists.event_typeobject
lists.event_type.fieldsArray von stringWo diese Codes vorkommen: resource.field
lists.event_type.codesArray von object
lists.event_type.codes[].codestring
lists.event_type.codes[].namestring