Workspaces
Basis-URL: https://app.neuroflash.com/api/workspace-service
Erstellen und verwalten Sie Arbeitsbereiche.
Erstelle einen neuen Arbeitsbereich mit dem aktuellen Kunden als Eigentümer
POST
/v1/workspacesErstellt einen neuen Arbeitsbereich und fügt den aktuell angemeldeten Kunden als Mitglied mit der Rolle Eigentümer hinzu
Anfrage-Body
FeldTypErforderlichBeschreibung
namestringJaName des ArbeitsbereichsAntwort
FeldTypBeschreibung
_embeddedobject
avatarobject
_embeddedobject
signedUrlstringcreatedAtstringcreatedByUserIdstringfileNamestringidstringsignedUrlstringstorageKeystringupdatedAtstringworkspaceIdstringbillingContactobject
activeDiscountstringschreibgeschützt von Stripe synchronisiert: true, wenn ein Rabatt für diesen Stripe-Kunden aktiv istaddressLine1stringschreibgeschützt von Stripe synchronisiert: erste Zeile der Adressen des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: zweite Zeile der Adressen des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istnamestringName des AbrechnungskontaktspostalCodestringschreibgeschützt von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringschreibgeschützt von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kunden-ID für Abrechnungszwecke. Könnte optional werden, wenn wir weitere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerveraltet: entfernen, sobald das Frontend dies nicht mehr benötigtnewPricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlag, das angibt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie pausiert sind oder mehr Mitglieder als der aktuelle Tarif zulässtactiveDiscountsarray<string>schreibgeschützt von Stripe synchronisiert: wahr, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegerAnzahl der Wörter, die in diesem Arbeitsbereich im aktuellen Abrechnungszeitraum noch verwendet werden könnenbonusWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Kann derzeit von Administratoren verwaltet werden Zusätzliche Bonuswörter verfügbar zur VerwendungcreatedAtstringcreatedByUserIdstringcurrencystringendDatestringschreibgeschützt von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istisGracePeriodbooleanwahr, wenn das Abonnement zu einem festgelegten Datum in der Zukunft storniert wirdisTrialbooleanwahr, wenn dies derzeit ein Testzeitraum istlimitRenewalDatestringnächstes Datum, an dem die Limits (wie verfügbare Wörter, verfügbare Bilder usw.) zurückgesetzt werden. Dies geschieht monatlich, beginnend mit dem Start des AbonnementsnextSubscriptionCycleStartstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für den Start des nächsten Abrechnungszyklus. Dies ist NICHT unbedingt der Zeitstempel, zu dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringschreibgeschützt von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanschreibgeschützt von Stripe synchronisiert: wahr, wenn die Zahlungserfassung für dieses Abonnement derzeit unterbrochen ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur kostenlos sind, behandeln wir Abonnements mit unterbrochener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerveraltet: diese Felder werden intern verwaltet, werden aber in die Limit-Struktur verschoben veraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter der Tarif aus diesem Abonnement zulässtsepaPaymentFailedbooleanschreibgeschützt von Stripe synchronisiert: Flag, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Wird verwendet, um die verfügbaren Wörter nächsten Monat zu berechnen, da Sie nur überschüssige Wörter aus dem letzten Monat behalten können, nicht über mehrere Monate hinweg sammeln Wörter aus dem Vormonat übertragenstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnement-Elements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für das Ende des TestzeitraumstrialStartedAtstringschreibgeschützt von Stripe synchronisiert: wenn ein Test läuft, Datum, an dem er begonnen hatupdatedAtstringusedWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter wurden in diesem Arbeitsbereich im aktuellen Monat verwendetworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, an dem das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich jemals ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begannidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keinen zugewiesenen Team als Besitzer, benötigen aber trotzdem einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID des Legacy-Teams, aus dem dieser Arbeitsbereich importiert wurdekeystringEindeutige, vom Menschen lesbare Kennung des ArbeitsbereichskeyIndexintegerEindeutig automatisch generierter Index, der zur Erzeugung eines eindeutigen Schlüssels verwendet wirdnamestringName des ArbeitsbereichstrialStartedAtstringFalls dieser Arbeitsbereich jemals ein Abonnement mit Testversion hatte, enthält dies den Zeitpunkt des StartsupdatedAtstringBeispiel
- cURL
- Python
- Node.js
- Go
curl -X POST "https://app.neuroflash.com/api/workspace-service/v1/workspaces" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'
import requests
response = requests.post(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces",
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
json={
"name": "string"
},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces`,
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "string"
}),
}
).then((r) => r.json());
body, _ := json.Marshal(map[string]any{
"name": "string",
})
req, _ := http.NewRequest("POST", "https://app.neuroflash.com/api/workspace-service/v1/workspaces", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"_embedded": {
"avatar": {
"_embedded": {
"signedUrl": "https://storage.googleapis.com/workspaces/550e8400-e29b-41d4-a716-446655440000/avatar/113c0b32-ed6c-4421-b7da-d1faf238eb56.jpg"
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"fileName": "a2G8Sa7Mn47Je0Lm.png",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"signedUrl": "https://storage.googleapis.com/workspaces/550e8400-e29b-41d4-a716-446655440000/avatar/113c0b32-ed6c-4421-b7da-d1faf238eb56.jpg",
"storageKey": "workspaces/550e8400-e29b-41d4-a716-446655440000/avatar",
"updatedAt": "2025-01-14T16:20:59Z",
"workspaceId": "550e8400-e29b-41d4-a716-446655440000"
},
"billingContact": {
"activeDiscount": "string",
"addressLine1": "123 Main St",
"addressLine2": "123 Main St",
"city": "Berlin",
"country": "DE",
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"defaultPaymentCardNumberLastFourDigits": "1234",
"defaultPaymentMethod": "acss_debit",
"defaultPaymentMethodCardBrand": "amex",
"email": "max.mustermann@neuroflash.com",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 12345,
"name": "Max Mustermann",
"postalCode": "12345",
"state": "Schleswig-Holstein",
"stripeCustomerId": "cus_12345abcdef",
"updatedAt": "2025-01-14T16:20:59Z"
},
"currentSubscription": {
"_embedded": {
"availableWords": 500,
"newPricingPlan": {
"active": "...",
"billingInterval": "...",
"categoryId": "...",
"displayName": "...",
"id": "...",
"importedFromLegacyId": "...",
"isDefault": "...",
"priceInEuro": "...",
"pricePerCurrency": "...",
"stripeBillingPortalEnabled": "...",
"stripePriceId": "...",
"stripeTrackUsage": "...",
"tier": "...",
"trialDays": "..."
},
"pricingPlan": {
"active": "...",
"billingInterval": "...",
"categoryId": "...",
"displayName": "...",
"id": "...",
"importedFromLegacyId": "...",
"isDefault": "...",
"priceInEuro": "...",
"pricePerCurrency": "...",
"stripeBillingPortalEnabled": "...",
"stripePriceId": "...",
"stripeTrackUsage": "...",
"tier": "...",
"trialDays": "..."
},
"pricingPlanCategory": {
"displayName": "...",
"id": "...",
"translationKey": "..."
}
},
"active": true,
"activeDiscounts": [
"string"
],
"availableWords": 500,
"bonusWords": 1000,
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"currency": "aed",
"endDate": "string",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 12345,
"isGracePeriod": false,
"isTrial": false,
"limitRenewalDate": "string",
"nextSubscriptionCycleStart": "2024-01-01T00:00:00Z",
"paymentCardNumberLastFourDigits": "4242",
"paymentMethodCardBrand": "amex",
"paymentPaused": false,
"paymentType": "acss_debit",
"pricingPlanId": "18d0045a-5850-4bf4-8d5d-3dc8684e2bb2",
"pricingPlanWords": 10000,
"sepaPaymentFailed": false,
"spilloverWords": 500,
"stripeStatus": "active",
"stripeSubscriptionId": "sub_12345abcdef",
"stripeSubscriptionItemId": "sub_item_ad909w0",
"trialEndsAt": "2023-12-31T23:59:59Z",
"trialStartedAt": "string",
"updatedAt": "2025-01-14T16:20:59Z",
"usedWords": 5000,
"workspaceId": "550e8400-e29b-41d4-a716-446655440000"
}
},
"billingContactId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"currentSubscriptionId": "550e8400-e29b-41d4-a716-446655440000",
"firstMemberInvitedAt": "2022-01-01T00:00:00Z",
"firstPaidSubscriptionAt": "string",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamId": 187,
"key": "NF-GK352",
"keyIndex": 57,
"name": "Online Marketing Team",
"trialStartedAt": "2014-01-02T14:22:00Z",
"updatedAt": "2025-01-14T16:20:59Z"
}
Arbeitsbereiche auflisten, die für den authentifizierten Kunden sichtbar sind
GET
/v1/workspacesAlle Arbeitsbereiche auflisten, die der authentifizierte Kunde anzeigen darf
Abfrageparameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
page | integer | — | Seitennummer für Pagination |
size | integer | — | Anzahl der Elemente pro Seite |
order | string | — | Sortierrichtung: asc oder desc |
sort | string | — | Feldname zum Sortieren |
importedFromLegacyTeamIds | string | — | Nach legacyTeamIds filtern, von denen der Arbeitsbereich erstellt wurde, durch Komma getrennt |
ownerLegacyCustomerIds | string | — | Nach Legacy-Kunden-IDs filtern |
search | string | — | Suche in Name, ID und Schlüssel des Arbeitsbereichs |
Antwort
FeldTypBeschreibung
dataarray<object>
_embeddedobject
avatarobject
_embeddedobject
signedUrlstringcreatedAtstringcreatedByUserIdstringfileNamestringidstringsignedUrlstringstorageKeystringupdatedAtstringworkspaceIdstringbillingContactobject
activeDiscountstringschreibgeschützt von Stripe synchronisiert: true, wenn ein Rabatt für diesen Stripe-Kunden aktiv istaddressLine1stringschreibgeschützt von Stripe synchronisiert: erste Zeile der Adressen des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: zweite Zeile der Adressen des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istnamestringName des AbrechnungskontaktspostalCodestringschreibgeschützt von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringschreibgeschützt von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kunden-ID für Abrechnungszwecke. Könnte optional werden, wenn wir weitere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerveraltet: entfernen, sobald das Frontend dies nicht mehr benötigtnewPricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlag, das angibt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie pausiert sind oder mehr Mitglieder als der aktuelle Tarif zulässtactiveDiscountsarray<string>schreibgeschützt von Stripe synchronisiert: wahr, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegerAnzahl der Wörter, die in diesem Arbeitsbereich im aktuellen Abrechnungszeitraum noch verwendet werden könnenbonusWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Kann derzeit von Administratoren verwaltet werden Zusätzliche Bonuswörter verfügbar zur VerwendungcreatedAtstringcreatedByUserIdstringcurrencystringendDatestringschreibgeschützt von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istisGracePeriodbooleanwahr, wenn das Abonnement zu einem festgelegten Datum in der Zukunft storniert wirdisTrialbooleanwahr, wenn dies derzeit ein Testzeitraum istlimitRenewalDatestringnächstes Datum, an dem die Limits (wie verfügbare Wörter, verfügbare Bilder usw.) zurückgesetzt werden. Dies geschieht monatlich, beginnend mit dem Start des AbonnementsnextSubscriptionCycleStartstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für den Start des nächsten Abrechnungszyklus. Dies ist NICHT unbedingt der Zeitstempel, zu dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringschreibgeschützt von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanschreibgeschützt von Stripe synchronisiert: wahr, wenn die Zahlungserfassung für dieses Abonnement derzeit unterbrochen ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur kostenlos sind, behandeln wir Abonnements mit unterbrochener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerveraltet: diese Felder werden intern verwaltet, werden aber in die Limit-Struktur verschoben veraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter der Tarif aus diesem Abonnement zulässtsepaPaymentFailedbooleanschreibgeschützt von Stripe synchronisiert: Flag, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Wird verwendet, um die verfügbaren Wörter nächsten Monat zu berechnen, da Sie nur überschüssige Wörter aus dem letzten Monat behalten können, nicht über mehrere Monate hinweg sammeln Wörter aus dem Vormonat übertragenstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnement-Elements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für das Ende des TestzeitraumstrialStartedAtstringschreibgeschützt von Stripe synchronisiert: wenn ein Test läuft, Datum, an dem er begonnen hatupdatedAtstringusedWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter wurden in diesem Arbeitsbereich im aktuellen Monat verwendetworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, an dem das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich jemals ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begannidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keinen zugewiesenen Team als Besitzer, benötigen aber trotzdem einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID des Legacy-Teams, aus dem dieser Arbeitsbereich importiert wurdekeystringEindeutige, vom Menschen lesbare Kennung des ArbeitsbereichskeyIndexintegerEindeutig automatisch generierter Index, der zur Erzeugung eines eindeutigen Schlüssels verwendet wirdnamestringName des ArbeitsbereichstrialStartedAtstringFalls dieser Arbeitsbereich jemals ein Abonnement mit Testversion hatte, enthält dies den Zeitpunkt des StartsupdatedAtstringpageobject
currentPageintegersizeintegertotalElementsintegertotalPagesintegerBeispiel
- cURL
- Python
- Node.js
- Go
curl "https://app.neuroflash.com/api/workspace-service/v1/workspaces" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
response = requests.get(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces",
headers={"Authorization": f"Bearer {token}"},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
req, _ := http.NewRequest("GET", "https://app.neuroflash.com/api/workspace-service/v1/workspaces", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"data": [
{
"_embedded": {
"avatar": {
"_embedded": "...",
"createdAt": "...",
"createdByUserId": "...",
"fileName": "...",
"id": "...",
"signedUrl": "...",
"storageKey": "...",
"updatedAt": "...",
"workspaceId": "..."
},
"billingContact": {
"activeDiscount": "...",
"addressLine1": "...",
"addressLine2": "...",
"city": "...",
"country": "...",
"createdAt": "...",
"createdByUserId": "...",
"defaultPaymentCardNumberLastFourDigits": "...",
"defaultPaymentMethod": "...",
"defaultPaymentMethodCardBrand": "...",
"email": "...",
"id": "...",
"importedFromLegacyCustomerId": "...",
"name": "...",
"postalCode": "...",
"state": "...",
"stripeCustomerId": "...",
"updatedAt": "..."
},
"currentSubscription": {
"_embedded": "...",
"active": "...",
"activeDiscounts": "...",
"availableWords": "...",
"bonusWords": "...",
"createdAt": "...",
"createdByUserId": "...",
"currency": "...",
"endDate": "...",
"id": "...",
"importedFromLegacyCustomerId": "...",
"isGracePeriod": "...",
"isTrial": "...",
"limitRenewalDate": "...",
"nextSubscriptionCycleStart": "...",
"paymentCardNumberLastFourDigits": "...",
"paymentMethodCardBrand": "...",
"paymentPaused": "...",
"paymentType": "...",
"pricingPlanId": "...",
"pricingPlanWords": "...",
"sepaPaymentFailed": "...",
"spilloverWords": "...",
"stripeStatus": "...",
"stripeSubscriptionId": "...",
"stripeSubscriptionItemId": "...",
"trialEndsAt": "...",
"trialStartedAt": "...",
"updatedAt": "...",
"usedWords": "...",
"workspaceId": "..."
}
},
"billingContactId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"currentSubscriptionId": "550e8400-e29b-41d4-a716-446655440000",
"firstMemberInvitedAt": "2022-01-01T00:00:00Z",
"firstPaidSubscriptionAt": "string",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamId": 187,
"key": "NF-GK352",
"keyIndex": 57,
"name": "Online Marketing Team",
"trialStartedAt": "2014-01-02T14:22:00Z",
"updatedAt": "2025-01-14T16:20:59Z"
}
],
"page": {
"currentPage": 2,
"size": 10,
"totalElements": 35,
"totalPages": 4
}
}
Get
GET
/v1/workspaces/{workspaceId}Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | workspaceId |
Antwort
FeldTypBeschreibung
_embeddedobject
avatarobject
_embeddedobject
signedUrlstringcreatedAtstringcreatedByUserIdstringfileNamestringidstringsignedUrlstringstorageKeystringupdatedAtstringworkspaceIdstringbillingContactobject
activeDiscountstringschreibgeschützt von Stripe synchronisiert: true, wenn ein Rabatt für diesen Stripe-Kunden aktiv istaddressLine1stringschreibgeschützt von Stripe synchronisiert: erste Zeile der Adressen des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: zweite Zeile der Adressen des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istnamestringName des AbrechnungskontaktspostalCodestringschreibgeschützt von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringschreibgeschützt von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kunden-ID für Abrechnungszwecke. Könnte optional werden, wenn wir weitere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerveraltet: entfernen, sobald das Frontend dies nicht mehr benötigtnewPricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlag, das angibt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie pausiert sind oder mehr Mitglieder als der aktuelle Tarif zulässtactiveDiscountsarray<string>schreibgeschützt von Stripe synchronisiert: wahr, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegerAnzahl der Wörter, die in diesem Arbeitsbereich im aktuellen Abrechnungszeitraum noch verwendet werden könnenbonusWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Kann derzeit von Administratoren verwaltet werden Zusätzliche Bonuswörter verfügbar zur VerwendungcreatedAtstringcreatedByUserIdstringcurrencystringendDatestringschreibgeschützt von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istisGracePeriodbooleanwahr, wenn das Abonnement zu einem festgelegten Datum in der Zukunft storniert wirdisTrialbooleanwahr, wenn dies derzeit ein Testzeitraum istlimitRenewalDatestringnächstes Datum, an dem die Limits (wie verfügbare Wörter, verfügbare Bilder usw.) zurückgesetzt werden. Dies geschieht monatlich, beginnend mit dem Start des AbonnementsnextSubscriptionCycleStartstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für den Start des nächsten Abrechnungszyklus. Dies ist NICHT unbedingt der Zeitstempel, zu dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringschreibgeschützt von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanschreibgeschützt von Stripe synchronisiert: wahr, wenn die Zahlungserfassung für dieses Abonnement derzeit unterbrochen ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur kostenlos sind, behandeln wir Abonnements mit unterbrochener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerveraltet: diese Felder werden intern verwaltet, werden aber in die Limit-Struktur verschoben veraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter der Tarif aus diesem Abonnement zulässtsepaPaymentFailedbooleanschreibgeschützt von Stripe synchronisiert: Flag, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Wird verwendet, um die verfügbaren Wörter nächsten Monat zu berechnen, da Sie nur überschüssige Wörter aus dem letzten Monat behalten können, nicht über mehrere Monate hinweg sammeln Wörter aus dem Vormonat übertragenstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnement-Elements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für das Ende des TestzeitraumstrialStartedAtstringschreibgeschützt von Stripe synchronisiert: wenn ein Test läuft, Datum, an dem er begonnen hatupdatedAtstringusedWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter wurden in diesem Arbeitsbereich im aktuellen Monat verwendetworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, an dem das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich jemals ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begannidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keinen zugewiesenen Team als Besitzer, benötigen aber trotzdem einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID des Legacy-Teams, aus dem dieser Arbeitsbereich importiert wurdekeystringEindeutige, vom Menschen lesbare Kennung des ArbeitsbereichskeyIndexintegerEindeutig automatisch generierter Index, der zur Erzeugung eines eindeutigen Schlüssels verwendet wirdnamestringName des ArbeitsbereichstrialStartedAtstringFalls dieser Arbeitsbereich jemals ein Abonnement mit Testversion hatte, enthält dies den Zeitpunkt des StartsupdatedAtstringBeispiel
- cURL
- Python
- Node.js
- Go
curl "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
response = requests.get(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}",
headers={"Authorization": f"Bearer {token}"},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
req, _ := http.NewRequest("GET", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"_embedded": {
"avatar": {
"_embedded": {
"signedUrl": "https://storage.googleapis.com/workspaces/550e8400-e29b-41d4-a716-446655440000/avatar/113c0b32-ed6c-4421-b7da-d1faf238eb56.jpg"
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"fileName": "a2G8Sa7Mn47Je0Lm.png",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"signedUrl": "https://storage.googleapis.com/workspaces/550e8400-e29b-41d4-a716-446655440000/avatar/113c0b32-ed6c-4421-b7da-d1faf238eb56.jpg",
"storageKey": "workspaces/550e8400-e29b-41d4-a716-446655440000/avatar",
"updatedAt": "2025-01-14T16:20:59Z",
"workspaceId": "550e8400-e29b-41d4-a716-446655440000"
},
"billingContact": {
"activeDiscount": "string",
"addressLine1": "123 Main St",
"addressLine2": "123 Main St",
"city": "Berlin",
"country": "DE",
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"defaultPaymentCardNumberLastFourDigits": "1234",
"defaultPaymentMethod": "acss_debit",
"defaultPaymentMethodCardBrand": "amex",
"email": "max.mustermann@neuroflash.com",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 12345,
"name": "Max Mustermann",
"postalCode": "12345",
"state": "Schleswig-Holstein",
"stripeCustomerId": "cus_12345abcdef",
"updatedAt": "2025-01-14T16:20:59Z"
},
"currentSubscription": {
"_embedded": {
"availableWords": 500,
"newPricingPlan": {
"active": "...",
"billingInterval": "...",
"categoryId": "...",
"displayName": "...",
"id": "...",
"importedFromLegacyId": "...",
"isDefault": "...",
"priceInEuro": "...",
"pricePerCurrency": "...",
"stripeBillingPortalEnabled": "...",
"stripePriceId": "...",
"stripeTrackUsage": "...",
"tier": "...",
"trialDays": "..."
},
"pricingPlan": {
"active": "...",
"billingInterval": "...",
"categoryId": "...",
"displayName": "...",
"id": "...",
"importedFromLegacyId": "...",
"isDefault": "...",
"priceInEuro": "...",
"pricePerCurrency": "...",
"stripeBillingPortalEnabled": "...",
"stripePriceId": "...",
"stripeTrackUsage": "...",
"tier": "...",
"trialDays": "..."
},
"pricingPlanCategory": {
"displayName": "...",
"id": "...",
"translationKey": "..."
}
},
"active": true,
"activeDiscounts": [
"string"
],
"availableWords": 500,
"bonusWords": 1000,
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"currency": "aed",
"endDate": "string",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 12345,
"isGracePeriod": false,
"isTrial": false,
"limitRenewalDate": "string",
"nextSubscriptionCycleStart": "2024-01-01T00:00:00Z",
"paymentCardNumberLastFourDigits": "4242",
"paymentMethodCardBrand": "amex",
"paymentPaused": false,
"paymentType": "acss_debit",
"pricingPlanId": "18d0045a-5850-4bf4-8d5d-3dc8684e2bb2",
"pricingPlanWords": 10000,
"sepaPaymentFailed": false,
"spilloverWords": 500,
"stripeStatus": "active",
"stripeSubscriptionId": "sub_12345abcdef",
"stripeSubscriptionItemId": "sub_item_ad909w0",
"trialEndsAt": "2023-12-31T23:59:59Z",
"trialStartedAt": "string",
"updatedAt": "2025-01-14T16:20:59Z",
"usedWords": 5000,
"workspaceId": "550e8400-e29b-41d4-a716-446655440000"
}
},
"billingContactId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"currentSubscriptionId": "550e8400-e29b-41d4-a716-446655440000",
"firstMemberInvitedAt": "2022-01-01T00:00:00Z",
"firstPaidSubscriptionAt": "string",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamId": 187,
"key": "NF-GK352",
"keyIndex": 57,
"name": "Online Marketing Team",
"trialStartedAt": "2014-01-02T14:22:00Z",
"updatedAt": "2025-01-14T16:20:59Z"
}
Update
PUT
/v1/workspaces/{workspaceId}Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | workspaceId |
Anfrage-Body
FeldTypErforderlichBeschreibung
namestringJaName des ArbeitsbereichsAntwort
FeldTypBeschreibung
_embeddedobject
avatarobject
_embeddedobject
signedUrlstringcreatedAtstringcreatedByUserIdstringfileNamestringidstringsignedUrlstringstorageKeystringupdatedAtstringworkspaceIdstringbillingContactobject
activeDiscountstringschreibgeschützt von Stripe synchronisiert: true, wenn ein Rabatt für diesen Stripe-Kunden aktiv istaddressLine1stringschreibgeschützt von Stripe synchronisiert: erste Zeile der Adressen des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: zweite Zeile der Adressen des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istnamestringName des AbrechnungskontaktspostalCodestringschreibgeschützt von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringschreibgeschützt von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kunden-ID für Abrechnungszwecke. Könnte optional werden, wenn wir weitere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerveraltet: entfernen, sobald das Frontend dies nicht mehr benötigtnewPricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanobject
activebooleanauf true gesetzt, wenn dieser Tarif in bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Tarif gehörtdisplayNamestringName für interne Zwecke wie die Admin-Benutzeroberfläche oder Hubspot. Sollte nicht für Kunden angezeigt werdenidstringID des TarifsimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standard-Tarif für neue Kunden?priceInEuronumberwie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenkettenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarif im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackUsagebooleanwenn true, sollte die Nutzung für Abonnements mit diesem Tarif in Stripe nachverfolgt werdentierintegertrialDaysintegerwie viele Testtage für diesen Tarif zulässig sindpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlag, das angibt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie pausiert sind oder mehr Mitglieder als der aktuelle Tarif zulässtactiveDiscountsarray<string>schreibgeschützt von Stripe synchronisiert: wahr, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegerAnzahl der Wörter, die in diesem Arbeitsbereich im aktuellen Abrechnungszeitraum noch verwendet werden könnenbonusWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Kann derzeit von Administratoren verwaltet werden Zusätzliche Bonuswörter verfügbar zur VerwendungcreatedAtstringcreatedByUserIdstringcurrencystringendDatestringschreibgeschützt von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: nur erforderlich, während der Import aus der Legacy-API noch aktiv istisGracePeriodbooleanwahr, wenn das Abonnement zu einem festgelegten Datum in der Zukunft storniert wirdisTrialbooleanwahr, wenn dies derzeit ein Testzeitraum istlimitRenewalDatestringnächstes Datum, an dem die Limits (wie verfügbare Wörter, verfügbare Bilder usw.) zurückgesetzt werden. Dies geschieht monatlich, beginnend mit dem Start des AbonnementsnextSubscriptionCycleStartstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für den Start des nächsten Abrechnungszyklus. Dies ist NICHT unbedingt der Zeitstempel, zu dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringschreibgeschützt von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanschreibgeschützt von Stripe synchronisiert: wahr, wenn die Zahlungserfassung für dieses Abonnement derzeit unterbrochen ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur kostenlos sind, behandeln wir Abonnements mit unterbrochener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerveraltet: diese Felder werden intern verwaltet, werden aber in die Limit-Struktur verschoben veraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter der Tarif aus diesem Abonnement zulässtsepaPaymentFailedbooleanschreibgeschützt von Stripe synchronisiert: Flag, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben. Wird verwendet, um die verfügbaren Wörter nächsten Monat zu berechnen, da Sie nur überschüssige Wörter aus dem letzten Monat behalten können, nicht über mehrere Monate hinweg sammeln Wörter aus dem Vormonat übertragenstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnement-Elements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringschreibgeschützt von Stripe synchronisiert: Zeitstempel für das Ende des TestzeitraumstrialStartedAtstringschreibgeschützt von Stripe synchronisiert: wenn ein Test läuft, Datum, an dem er begonnen hatupdatedAtstringusedWordsintegerveraltet: wird in eine separate Limits-Tabelle/einen Dienst verschoben Wie viele Wörter wurden in diesem Arbeitsbereich im aktuellen Monat verwendetworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, an dem das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich jemals ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begannidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keinen zugewiesenen Team als Besitzer, benötigen aber trotzdem einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID des Legacy-Teams, aus dem dieser Arbeitsbereich importiert wurdekeystringEindeutige, vom Menschen lesbare Kennung des ArbeitsbereichskeyIndexintegerEindeutig automatisch generierter Index, der zur Erzeugung eines eindeutigen Schlüssels verwendet wirdnamestringName des ArbeitsbereichstrialStartedAtstringFalls dieser Arbeitsbereich jemals ein Abonnement mit Testversion hatte, enthält dies den Zeitpunkt des StartsupdatedAtstringBeispiel
- cURL
- Python
- Node.js
- Go
curl -X PUT "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'
import requests
response = requests.put(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}",
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
json={
"name": "string"
},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}`,
{
method: "PUT",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "string"
}),
}
).then((r) => r.json());
body, _ := json.Marshal(map[string]any{
"name": "string",
})
req, _ := http.NewRequest("PUT", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"_embedded": {
"avatar": {
"_embedded": {
"signedUrl": "https://storage.googleapis.com/workspaces/550e8400-e29b-41d4-a716-446655440000/avatar/113c0b32-ed6c-4421-b7da-d1faf238eb56.jpg"
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"fileName": "a2G8Sa7Mn47Je0Lm.png",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"signedUrl": "https://storage.googleapis.com/workspaces/550e8400-e29b-41d4-a716-446655440000/avatar/113c0b32-ed6c-4421-b7da-d1faf238eb56.jpg",
"storageKey": "workspaces/550e8400-e29b-41d4-a716-446655440000/avatar",
"updatedAt": "2025-01-14T16:20:59Z",
"workspaceId": "550e8400-e29b-41d4-a716-446655440000"
},
"billingContact": {
"activeDiscount": "string",
"addressLine1": "123 Main St",
"addressLine2": "123 Main St",
"city": "Berlin",
"country": "DE",
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"defaultPaymentCardNumberLastFourDigits": "1234",
"defaultPaymentMethod": "acss_debit",
"defaultPaymentMethodCardBrand": "amex",
"email": "max.mustermann@neuroflash.com",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 12345,
"name": "Max Mustermann",
"postalCode": "12345",
"state": "Schleswig-Holstein",
"stripeCustomerId": "cus_12345abcdef",
"updatedAt": "2025-01-14T16:20:59Z"
},
"currentSubscription": {
"_embedded": {
"availableWords": 500,
"newPricingPlan": {
"active": "...",
"billingInterval": "...",
"categoryId": "...",
"displayName": "...",
"id": "...",
"importedFromLegacyId": "...",
"isDefault": "...",
"priceInEuro": "...",
"pricePerCurrency": "...",
"stripeBillingPortalEnabled": "...",
"stripePriceId": "...",
"stripeTrackUsage": "...",
"tier": "...",
"trialDays": "..."
},
"pricingPlan": {
"active": "...",
"billingInterval": "...",
"categoryId": "...",
"displayName": "...",
"id": "...",
"importedFromLegacyId": "...",
"isDefault": "...",
"priceInEuro": "...",
"pricePerCurrency": "...",
"stripeBillingPortalEnabled": "...",
"stripePriceId": "...",
"stripeTrackUsage": "...",
"tier": "...",
"trialDays": "..."
},
"pricingPlanCategory": {
"displayName": "...",
"id": "...",
"translationKey": "..."
}
},
"active": true,
"activeDiscounts": [
"string"
],
"availableWords": 500,
"bonusWords": 1000,
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"currency": "aed",
"endDate": "string",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 12345,
"isGracePeriod": false,
"isTrial": false,
"limitRenewalDate": "string",
"nextSubscriptionCycleStart": "2024-01-01T00:00:00Z",
"paymentCardNumberLastFourDigits": "4242",
"paymentMethodCardBrand": "amex",
"paymentPaused": false,
"paymentType": "acss_debit",
"pricingPlanId": "18d0045a-5850-4bf4-8d5d-3dc8684e2bb2",
"pricingPlanWords": 10000,
"sepaPaymentFailed": false,
"spilloverWords": 500,
"stripeStatus": "active",
"stripeSubscriptionId": "sub_12345abcdef",
"stripeSubscriptionItemId": "sub_item_ad909w0",
"trialEndsAt": "2023-12-31T23:59:59Z",
"trialStartedAt": "string",
"updatedAt": "2025-01-14T16:20:59Z",
"usedWords": 5000,
"workspaceId": "550e8400-e29b-41d4-a716-446655440000"
}
},
"billingContactId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"currentSubscriptionId": "550e8400-e29b-41d4-a716-446655440000",
"firstMemberInvitedAt": "2022-01-01T00:00:00Z",
"firstPaidSubscriptionAt": "string",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamId": 187,
"key": "NF-GK352",
"keyIndex": 57,
"name": "Online Marketing Team",
"trialStartedAt": "2014-01-02T14:22:00Z",
"updatedAt": "2025-01-14T16:20:59Z"
}
Delete
DELETE
/v1/workspaces/{workspaceId}Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | workspaceId |
Beispiel
- cURL
- Python
- Node.js
- Go
curl -X DELETE "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
requests.delete(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}",
headers={"Authorization": f"Bearer {token}"},
)
await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}`,
{
method: "DELETE",
headers: { Authorization: `Bearer ${token}` },
}
);
req, _ := http.NewRequest("DELETE", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()