Mitglieder
Basis-URL: https://app.neuroflash.com/api/workspace-service
Verwalten Sie Arbeitsbereiche-Mitgliedschaften und Rollen.
Arbeitsbereich-Mitglied erstellen
POST
/v1/workspaces/{workspaceId}/workspace-membersErstellt ein neues Arbeitsbereich-Mitglied. Nur Arbeitsbereich-Inhaber und Administratoren können Mitglieder erstellen.
Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | Arbeitsbereichs-ID |
Anfrage-Body
FeldTypErforderlichBeschreibung
legacyCustomerIdintegerNeinID des Legacy-KundenrolestringJaRolle des Mitglieds im ArbeitsbereichAntwort
FeldTypBeschreibung
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanTrue, wenn der Kunde in einem Arbeitsbereich jemals eine Testversion gestartet hatlegacyIdintegerID des Kunden im Legacy-SystemnamestringName des Kundenpermissionsobjectworkspaceobject
_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 StartsupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerVeraltetimportedFromLegacyTeamCustomerIdintegerVeraltet: für Legacy-ImportlegacyCustomerIdintegerID des Legacy-KundenrolestringRolle des Mitglieds im ArbeitsbereichupdatedAtstringuserIdstringID des BenutzersworkspaceIdstringID des Arbeitsbereichs, zu dem das Mitglied gehörtBeispiel
- cURL
- Python
- Node.js
- Go
curl -X POST "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"legacyCustomerId": 0,
"role": "string"
}'
import requests
response = requests.post(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members",
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
json={
"legacyCustomerId": 0,
"role": "string"
},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}/workspace-members`,
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"legacyCustomerId": 0,
"role": "string"
}),
}
).then((r) => r.json());
body, _ := json.Marshal(map[string]any{
"legacyCustomerId": 0,
"role": "string",
})
req, _ := http.NewRequest("POST", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"/workspace-members", 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": {
"customer": {
"email": "eren.jaeger@neuroflash.com",
"hadTrial": false,
"legacyId": 5,
"name": "Eren Jaeger"
},
"permissions": {},
"workspace": {
"_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"
}
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamCustomerId": 12345,
"legacyCustomerId": 5,
"role": "MEMBER",
"updatedAt": "2025-01-14T16:20:59Z",
"userId": "3445546543",
"workspaceId": "992fd647-d15c-40e9-b61c-e19ef9eea35e"
}
Arbeitsbereich-Mitglieder des angegebenen Arbeitsbereichs auflisten
GET
/v1/workspaces/{workspaceId}/workspace-membersPfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | workspaceId |
Abfrageparameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
role | string | — | Nach Mitgliederrolle filtern |
legacyCustomerIds | array | — | Nach Legacy-Kunden-IDs filtern |
Antwort
FeldTypBeschreibung
dataarray<object>
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanTrue, wenn der Kunde in einem Arbeitsbereich jemals eine Testversion gestartet hatlegacyIdintegerID des Kunden im Legacy-SystemnamestringName des Kundenpermissionsobjectworkspaceobject
_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 StartsupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerVeraltetimportedFromLegacyTeamCustomerIdintegerVeraltet: für Legacy-ImportlegacyCustomerIdintegerID des Legacy-KundenrolestringRolle des Mitglieds im ArbeitsbereichupdatedAtstringuserIdstringID des BenutzersworkspaceIdstringID des Arbeitsbereichs, zu dem das Mitglied gehörtpageobject
currentPageintegersizeintegertotalElementsintegertotalPagesintegerBeispiel
- cURL
- Python
- Node.js
- Go
curl "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
response = requests.get(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members",
headers={"Authorization": f"Bearer {token}"},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}/workspace-members`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
req, _ := http.NewRequest("GET", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"/workspace-members", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"data": [
{
"_embedded": {
"customer": {
"email": "...",
"hadTrial": "...",
"legacyId": "...",
"name": "..."
},
"permissions": {},
"workspace": {
"_embedded": "...",
"billingContactId": "...",
"createdAt": "...",
"createdByUserId": "...",
"currentSubscriptionId": "...",
"firstMemberInvitedAt": "...",
"firstPaidSubscriptionAt": "...",
"id": "...",
"importedFromLegacyCustomerId": "...",
"importedFromLegacyTeamId": "...",
"key": "...",
"keyIndex": "...",
"name": "...",
"trialStartedAt": "...",
"updatedAt": "..."
}
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamCustomerId": 12345,
"legacyCustomerId": 5,
"role": "MEMBER",
"updatedAt": "2025-01-14T16:20:59Z",
"userId": "3445546543",
"workspaceId": "992fd647-d15c-40e9-b61c-e19ef9eea35e"
}
],
"page": {
"currentPage": 2,
"size": 10,
"totalElements": 35,
"totalPages": 4
}
}
Arbeitsbereich-Mitglied abrufen
GET
/v1/workspaces/{workspaceId}/workspace-members/{memberId}Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | Arbeitsbereichs-ID |
memberId | string | Ja | Mitglieds-ID |
Antwort
FeldTypBeschreibung
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanTrue, wenn der Kunde in einem Arbeitsbereich jemals eine Testversion gestartet hatlegacyIdintegerID des Kunden im Legacy-SystemnamestringName des Kundenpermissionsobjectworkspaceobject
_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 StartsupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerVeraltetimportedFromLegacyTeamCustomerIdintegerVeraltet: für Legacy-ImportlegacyCustomerIdintegerID des Legacy-KundenrolestringRolle des Mitglieds im ArbeitsbereichupdatedAtstringuserIdstringID des BenutzersworkspaceIdstringID des Arbeitsbereichs, zu dem das Mitglied gehörtBeispiel
- cURL
- Python
- Node.js
- Go
curl "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members/{member_id}" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
response = requests.get(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members/{member_id}",
headers={"Authorization": f"Bearer {token}"},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}/workspace-members/${memberId}`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
req, _ := http.NewRequest("GET", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"/workspace-members/"+memberID+"", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"_embedded": {
"customer": {
"email": "eren.jaeger@neuroflash.com",
"hadTrial": false,
"legacyId": 5,
"name": "Eren Jaeger"
},
"permissions": {},
"workspace": {
"_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"
}
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamCustomerId": 12345,
"legacyCustomerId": 5,
"role": "MEMBER",
"updatedAt": "2025-01-14T16:20:59Z",
"userId": "3445546543",
"workspaceId": "992fd647-d15c-40e9-b61c-e19ef9eea35e"
}
Arbeitsbereich-Mitglied aktualisieren
PUT
/v1/workspaces/{workspaceId}/workspace-members/{memberId}Aktualisiert die Rolle eines Arbeitsbereich-Mitglieds. Jeder Arbeitsbereich muss mindestens einen Inhaber haben.
Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | Arbeitsbereichs-ID |
memberId | string | Ja | Mitglieds-ID |
Anfrage-Body
FeldTypErforderlichBeschreibung
rolestringJaRolle des Mitglieds im ArbeitsbereichAntwort
FeldTypBeschreibung
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanTrue, wenn der Kunde in einem Arbeitsbereich jemals eine Testversion gestartet hatlegacyIdintegerID des Kunden im Legacy-SystemnamestringName des Kundenpermissionsobjectworkspaceobject
_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 StartsupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerVeraltetimportedFromLegacyTeamCustomerIdintegerVeraltet: für Legacy-ImportlegacyCustomerIdintegerID des Legacy-KundenrolestringRolle des Mitglieds im ArbeitsbereichupdatedAtstringuserIdstringID des BenutzersworkspaceIdstringID des Arbeitsbereichs, zu dem das Mitglied gehörtBeispiel
- cURL
- Python
- Node.js
- Go
curl -X PUT "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members/{member_id}" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"role": "string"
}'
import requests
response = requests.put(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members/{member_id}",
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
json={
"role": "string"
},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}/workspace-members/${memberId}`,
{
method: "PUT",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"role": "string"
}),
}
).then((r) => r.json());
body, _ := json.Marshal(map[string]any{
"role": "string",
})
req, _ := http.NewRequest("PUT", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"/workspace-members/"+memberID+"", 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": {
"customer": {
"email": "eren.jaeger@neuroflash.com",
"hadTrial": false,
"legacyId": 5,
"name": "Eren Jaeger"
},
"permissions": {},
"workspace": {
"_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"
}
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamCustomerId": 12345,
"legacyCustomerId": 5,
"role": "MEMBER",
"updatedAt": "2025-01-14T16:20:59Z",
"userId": "3445546543",
"workspaceId": "992fd647-d15c-40e9-b61c-e19ef9eea35e"
}
Arbeitsbereich-Mitglied löschen
DELETE
/v1/workspaces/{workspaceId}/workspace-members/{memberId}Löscht ein Arbeitsbereich-Mitglied. Der letzte Inhaber eines Arbeitsbereichs kann nicht gelöscht werden.
Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | Arbeitsbereichs-ID |
memberId | string | Ja | Mitglieds-ID |
Beispiel
- cURL
- Python
- Node.js
- Go
curl -X DELETE "https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members/{member_id}" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
requests.delete(
f"https://app.neuroflash.com/api/workspace-service/v1/workspaces/{workspace_id}/workspace-members/{member_id}",
headers={"Authorization": f"Bearer {token}"},
)
await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/workspaces/${workspaceId}/workspace-members/${memberId}`,
{
method: "DELETE",
headers: { Authorization: `Bearer ${token}` },
}
);
req, _ := http.NewRequest("DELETE", "https://app.neuroflash.com/api/workspace-service/v1/workspaces/"+workspaceID+"/workspace-members/"+memberID+"", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Arbeitsbereiche-Mitglieder des angegebenen Kunden auflisten
GET
/v1/customers/{customerId}/workspace-membersPfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
customerId | string | Ja | kundenId |
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 |
role | string | — | Nach Mitgliederrolle filtern |
legacyCustomerIds | array | — | Nach Legacy-Kunden-IDs filtern |
Antwort
FeldTypBeschreibung
dataarray<object>
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanTrue, wenn der Kunde in einem Arbeitsbereich jemals eine Testversion gestartet hatlegacyIdintegerID des Kunden im Legacy-SystemnamestringName des Kundenpermissionsobjectworkspaceobject
_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 StartsupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerVeraltetimportedFromLegacyTeamCustomerIdintegerVeraltet: für Legacy-ImportlegacyCustomerIdintegerID des Legacy-KundenrolestringRolle des Mitglieds im ArbeitsbereichupdatedAtstringuserIdstringID des BenutzersworkspaceIdstringID des Arbeitsbereichs, zu dem das Mitglied gehörtpageobject
currentPageintegersizeintegertotalElementsintegertotalPagesintegerBeispiel
- cURL
- Python
- Node.js
- Go
curl "https://app.neuroflash.com/api/workspace-service/v1/customers/{customer_id}/workspace-members" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
response = requests.get(
f"https://app.neuroflash.com/api/workspace-service/v1/customers/{customer_id}/workspace-members",
headers={"Authorization": f"Bearer {token}"},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/customers/${customerId}/workspace-members`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
req, _ := http.NewRequest("GET", "https://app.neuroflash.com/api/workspace-service/v1/customers/"+customerID+"/workspace-members", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"data": [
{
"_embedded": {
"customer": {
"email": "...",
"hadTrial": "...",
"legacyId": "...",
"name": "..."
},
"permissions": {},
"workspace": {
"_embedded": "...",
"billingContactId": "...",
"createdAt": "...",
"createdByUserId": "...",
"currentSubscriptionId": "...",
"firstMemberInvitedAt": "...",
"firstPaidSubscriptionAt": "...",
"id": "...",
"importedFromLegacyCustomerId": "...",
"importedFromLegacyTeamId": "...",
"key": "...",
"keyIndex": "...",
"name": "...",
"trialStartedAt": "...",
"updatedAt": "..."
}
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamCustomerId": 12345,
"legacyCustomerId": 5,
"role": "MEMBER",
"updatedAt": "2025-01-14T16:20:59Z",
"userId": "3445546543",
"workspaceId": "992fd647-d15c-40e9-b61c-e19ef9eea35e"
}
],
"page": {
"currentPage": 2,
"size": 10,
"totalElements": 35,
"totalPages": 4
}
}
Arbeitsbereichsmitglieder des angegebenen Benutzers auflisten
GET
/v1/users/{userId}/workspace-membersPfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
userId | string | Ja | userId |
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 |
role | string | — | Nach Mitgliederrolle filtern |
legacyCustomerIds | array | — | Nach Legacy-Kunden-IDs filtern |
Antwort
FeldTypBeschreibung
dataarray<object>
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanTrue, wenn der Kunde in einem Arbeitsbereich jemals eine Testversion gestartet hatlegacyIdintegerID des Kunden im Legacy-SystemnamestringName des Kundenpermissionsobjectworkspaceobject
_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 StartsupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerVeraltetimportedFromLegacyTeamCustomerIdintegerVeraltet: für Legacy-ImportlegacyCustomerIdintegerID des Legacy-KundenrolestringRolle des Mitglieds im ArbeitsbereichupdatedAtstringuserIdstringID des BenutzersworkspaceIdstringID des Arbeitsbereichs, zu dem das Mitglied gehörtpageobject
currentPageintegersizeintegertotalElementsintegertotalPagesintegerBeispiel
- cURL
- Python
- Node.js
- Go
curl "https://app.neuroflash.com/api/workspace-service/v1/users/{user_id}/workspace-members" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
response = requests.get(
f"https://app.neuroflash.com/api/workspace-service/v1/users/{user_id}/workspace-members",
headers={"Authorization": f"Bearer {token}"},
).json()
const response = await fetch(
`https://app.neuroflash.com/api/workspace-service/v1/users/${userId}/workspace-members`,
{ headers: { Authorization: `Bearer ${token}` } }
).then((r) => r.json());
req, _ := http.NewRequest("GET", "https://app.neuroflash.com/api/workspace-service/v1/users/"+userID+"/workspace-members", nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
Antwort:
{
"data": [
{
"_embedded": {
"customer": {
"email": "...",
"hadTrial": "...",
"legacyId": "...",
"name": "..."
},
"permissions": {},
"workspace": {
"_embedded": "...",
"billingContactId": "...",
"createdAt": "...",
"createdByUserId": "...",
"currentSubscriptionId": "...",
"firstMemberInvitedAt": "...",
"firstPaidSubscriptionAt": "...",
"id": "...",
"importedFromLegacyCustomerId": "...",
"importedFromLegacyTeamId": "...",
"key": "...",
"keyIndex": "...",
"name": "...",
"trialStartedAt": "...",
"updatedAt": "..."
}
},
"createdAt": "2025-01-14T16:20:59Z",
"createdByUserId": "b0920767-2e30-48d3-80ce-268810bc433a",
"id": "113c0b32-ed6c-4421-b7da-d1faf238eb56",
"importedFromLegacyCustomerId": 177,
"importedFromLegacyTeamCustomerId": 12345,
"legacyCustomerId": 5,
"role": "MEMBER",
"updatedAt": "2025-01-14T16:20:59Z",
"userId": "3445546543",
"workspaceId": "992fd647-d15c-40e9-b61c-e19ef9eea35e"
}
],
"page": {
"currentPage": 2,
"size": 10,
"totalElements": 35,
"totalPages": 4
}
}