Mitglieder
Basis-URL: https://app.neuroflash.com/api/workspace-service
Workspace-Mitgliedschaft und Rollen verwalten.
Create workspace members
POST
/v1/workspaces/{workspaceId}/workspace-membersAntwort
FeldTypBeschreibung
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanWahr, wenn der Kunde jemals eine Testphase in einem beliebigen Arbeitsbereich 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 Adresse des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: Zweite Zeile der Adresse des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdenamestringName des AbrechnungskontaktspostalCodestringreadonly von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringreadonly von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kundenkennung zu Abrechnungszwecken. Könnte optional werden, wenn wir andere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatnewPricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlagge, die anzeigt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie angehalten werden oder mehr Mitglieder haben, als der aktuelle Plan zulässtactiveDiscountsarray<string>readonly von Stripe synchronisiert: true, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegercreatedAtstringcreatedByUserIdstringcurrencystringendDatestringreadonly von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdeisGracePeriodbooleantrue, wenn das Abonnement zu einem festgelegten zukünftigen Datum storniert wirdisTrialbooleantrue, wenn dies derzeit eine Testphase 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 AbonnementsnextSubscriptionCycleStartstringreadonly von Stripe synchronisiert: Zeitstempel, wenn der nächste Abrechnungszyklus beginnt. Dies ist NICHT zwingend der Zeitstempel, an dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringreadonly von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanreadonly von Stripe synchronisiert: true, wenn die Zahlungserfassung für dieses Abonnement derzeit angehalten ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur für eine Weile kostenlos sind, behandeln wir Abonnements mit angehaltener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatsepaPaymentFailedbooleanreadonly von Stripe synchronisiert: Kennzeichen, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnementelements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringreadonly von Stripe synchronisiert: Zeitstempel, wenn die Testphase endettrialStartedAtstringreadonly von Stripe synchronisiert: wenn eine Testphase läuft, Datum, wann sie begonnen hatupdatedAtstringusedWordsintegerworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, wann das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich je ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begonnen hatidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID der Legacy-Mannschaft, aus der dieser Arbeitsbereich importiert wurdekeystringMenschenlesbarer eindeutiger Bezeichner des ArbeitsbereichskeyIndexintegerEindeutig generierter Index, der verwendet wird, um einen eindeutigen Schlüssel zu generierennamestringName des ArbeitsbereichstrialStartedAtstringWenn dieser Arbeitsbereich je ein Abonnement mit einer Testphase hatte, enthält dies den Zeitpunkt, wann sie begonnen hatupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren können.importedFromLegacyTeamCustomerIdintegerveraltet: für Legacy-Import ID des Legacy-Teamkunden, von dem dies importiert wurdelegacyCustomerIdintegerID 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 '{}'
import requests
response = requests.post(
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`,
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
}
).then((r) => r.json());
body, _ := json.Marshal(map[string]any{})
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": "...",
"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"
}
Get workspace members
GET
/v1/workspaces/{workspaceId}/workspace-membersPfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
workspaceId | string | Ja | workspaceId |
Antwort
FeldTypBeschreibung
dataarray<object>
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanWahr, wenn der Kunde jemals eine Testphase in einem beliebigen Arbeitsbereich 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 Adresse des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: Zweite Zeile der Adresse des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdenamestringName des AbrechnungskontaktspostalCodestringreadonly von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringreadonly von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kundenkennung zu Abrechnungszwecken. Könnte optional werden, wenn wir andere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatnewPricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlagge, die anzeigt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie angehalten werden oder mehr Mitglieder haben, als der aktuelle Plan zulässtactiveDiscountsarray<string>readonly von Stripe synchronisiert: true, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegercreatedAtstringcreatedByUserIdstringcurrencystringendDatestringreadonly von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdeisGracePeriodbooleantrue, wenn das Abonnement zu einem festgelegten zukünftigen Datum storniert wirdisTrialbooleantrue, wenn dies derzeit eine Testphase 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 AbonnementsnextSubscriptionCycleStartstringreadonly von Stripe synchronisiert: Zeitstempel, wenn der nächste Abrechnungszyklus beginnt. Dies ist NICHT zwingend der Zeitstempel, an dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringreadonly von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanreadonly von Stripe synchronisiert: true, wenn die Zahlungserfassung für dieses Abonnement derzeit angehalten ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur für eine Weile kostenlos sind, behandeln wir Abonnements mit angehaltener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatsepaPaymentFailedbooleanreadonly von Stripe synchronisiert: Kennzeichen, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnementelements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringreadonly von Stripe synchronisiert: Zeitstempel, wenn die Testphase endettrialStartedAtstringreadonly von Stripe synchronisiert: wenn eine Testphase läuft, Datum, wann sie begonnen hatupdatedAtstringusedWordsintegerworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, wann das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich je ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begonnen hatidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID der Legacy-Mannschaft, aus der dieser Arbeitsbereich importiert wurdekeystringMenschenlesbarer eindeutiger Bezeichner des ArbeitsbereichskeyIndexintegerEindeutig generierter Index, der verwendet wird, um einen eindeutigen Schlüssel zu generierennamestringName des ArbeitsbereichstrialStartedAtstringWenn dieser Arbeitsbereich je ein Abonnement mit einer Testphase hatte, enthält dies den Zeitpunkt, wann sie begonnen hatupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren können.importedFromLegacyTeamCustomerIdintegerveraltet: für Legacy-Import ID des Legacy-Teamkunden, von dem dies importiert wurdelegacyCustomerIdintegerID 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
}
}
Get
GET
/v1/workspaces/{workspaceId}/workspace-members/{memberId}Antwort
FeldTypBeschreibung
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanWahr, wenn der Kunde jemals eine Testphase in einem beliebigen Arbeitsbereich 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 Adresse des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: Zweite Zeile der Adresse des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdenamestringName des AbrechnungskontaktspostalCodestringreadonly von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringreadonly von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kundenkennung zu Abrechnungszwecken. Könnte optional werden, wenn wir andere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatnewPricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlagge, die anzeigt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie angehalten werden oder mehr Mitglieder haben, als der aktuelle Plan zulässtactiveDiscountsarray<string>readonly von Stripe synchronisiert: true, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegercreatedAtstringcreatedByUserIdstringcurrencystringendDatestringreadonly von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdeisGracePeriodbooleantrue, wenn das Abonnement zu einem festgelegten zukünftigen Datum storniert wirdisTrialbooleantrue, wenn dies derzeit eine Testphase 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 AbonnementsnextSubscriptionCycleStartstringreadonly von Stripe synchronisiert: Zeitstempel, wenn der nächste Abrechnungszyklus beginnt. Dies ist NICHT zwingend der Zeitstempel, an dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringreadonly von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanreadonly von Stripe synchronisiert: true, wenn die Zahlungserfassung für dieses Abonnement derzeit angehalten ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur für eine Weile kostenlos sind, behandeln wir Abonnements mit angehaltener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatsepaPaymentFailedbooleanreadonly von Stripe synchronisiert: Kennzeichen, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnementelements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringreadonly von Stripe synchronisiert: Zeitstempel, wenn die Testphase endettrialStartedAtstringreadonly von Stripe synchronisiert: wenn eine Testphase läuft, Datum, wann sie begonnen hatupdatedAtstringusedWordsintegerworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, wann das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich je ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begonnen hatidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID der Legacy-Mannschaft, aus der dieser Arbeitsbereich importiert wurdekeystringMenschenlesbarer eindeutiger Bezeichner des ArbeitsbereichskeyIndexintegerEindeutig generierter Index, der verwendet wird, um einen eindeutigen Schlüssel zu generierennamestringName des ArbeitsbereichstrialStartedAtstringWenn dieser Arbeitsbereich je ein Abonnement mit einer Testphase hatte, enthält dies den Zeitpunkt, wann sie begonnen hatupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren können.importedFromLegacyTeamCustomerIdintegerveraltet: für Legacy-Import ID des Legacy-Teamkunden, von dem dies importiert wurdelegacyCustomerIdintegerID 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": "...",
"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"
}
Update
PUT
/v1/workspaces/{workspaceId}/workspace-members/{memberId}Antwort
FeldTypBeschreibung
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanWahr, wenn der Kunde jemals eine Testphase in einem beliebigen Arbeitsbereich 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 Adresse des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: Zweite Zeile der Adresse des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdenamestringName des AbrechnungskontaktspostalCodestringreadonly von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringreadonly von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kundenkennung zu Abrechnungszwecken. Könnte optional werden, wenn wir andere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatnewPricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlagge, die anzeigt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie angehalten werden oder mehr Mitglieder haben, als der aktuelle Plan zulässtactiveDiscountsarray<string>readonly von Stripe synchronisiert: true, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegercreatedAtstringcreatedByUserIdstringcurrencystringendDatestringreadonly von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdeisGracePeriodbooleantrue, wenn das Abonnement zu einem festgelegten zukünftigen Datum storniert wirdisTrialbooleantrue, wenn dies derzeit eine Testphase 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 AbonnementsnextSubscriptionCycleStartstringreadonly von Stripe synchronisiert: Zeitstempel, wenn der nächste Abrechnungszyklus beginnt. Dies ist NICHT zwingend der Zeitstempel, an dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringreadonly von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanreadonly von Stripe synchronisiert: true, wenn die Zahlungserfassung für dieses Abonnement derzeit angehalten ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur für eine Weile kostenlos sind, behandeln wir Abonnements mit angehaltener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatsepaPaymentFailedbooleanreadonly von Stripe synchronisiert: Kennzeichen, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnementelements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringreadonly von Stripe synchronisiert: Zeitstempel, wenn die Testphase endettrialStartedAtstringreadonly von Stripe synchronisiert: wenn eine Testphase läuft, Datum, wann sie begonnen hatupdatedAtstringusedWordsintegerworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, wann das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich je ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begonnen hatidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID der Legacy-Mannschaft, aus der dieser Arbeitsbereich importiert wurdekeystringMenschenlesbarer eindeutiger Bezeichner des ArbeitsbereichskeyIndexintegerEindeutig generierter Index, der verwendet wird, um einen eindeutigen Schlüssel zu generierennamestringName des ArbeitsbereichstrialStartedAtstringWenn dieser Arbeitsbereich je ein Abonnement mit einer Testphase hatte, enthält dies den Zeitpunkt, wann sie begonnen hatupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren können.importedFromLegacyTeamCustomerIdintegerveraltet: für Legacy-Import ID des Legacy-Teamkunden, von dem dies importiert wurdelegacyCustomerIdintegerID 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 '{}'
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}"},
).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",
},
}
).then((r) => r.json());
body, _ := json.Marshal(map[string]any{})
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": "...",
"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"
}
Delete
DELETE
/v1/workspaces/{workspaceId}/workspace-members/{memberId}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()
Get workspace members
GET
/v1/customers/{customerId}/workspace-membersPfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
customerId | string | Ja | customerId |
Antwort
FeldTypBeschreibung
dataarray<object>
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanWahr, wenn der Kunde jemals eine Testphase in einem beliebigen Arbeitsbereich 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 Adresse des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: Zweite Zeile der Adresse des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdenamestringName des AbrechnungskontaktspostalCodestringreadonly von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringreadonly von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kundenkennung zu Abrechnungszwecken. Könnte optional werden, wenn wir andere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatnewPricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlagge, die anzeigt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie angehalten werden oder mehr Mitglieder haben, als der aktuelle Plan zulässtactiveDiscountsarray<string>readonly von Stripe synchronisiert: true, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegercreatedAtstringcreatedByUserIdstringcurrencystringendDatestringreadonly von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdeisGracePeriodbooleantrue, wenn das Abonnement zu einem festgelegten zukünftigen Datum storniert wirdisTrialbooleantrue, wenn dies derzeit eine Testphase 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 AbonnementsnextSubscriptionCycleStartstringreadonly von Stripe synchronisiert: Zeitstempel, wenn der nächste Abrechnungszyklus beginnt. Dies ist NICHT zwingend der Zeitstempel, an dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringreadonly von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanreadonly von Stripe synchronisiert: true, wenn die Zahlungserfassung für dieses Abonnement derzeit angehalten ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur für eine Weile kostenlos sind, behandeln wir Abonnements mit angehaltener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatsepaPaymentFailedbooleanreadonly von Stripe synchronisiert: Kennzeichen, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnementelements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringreadonly von Stripe synchronisiert: Zeitstempel, wenn die Testphase endettrialStartedAtstringreadonly von Stripe synchronisiert: wenn eine Testphase läuft, Datum, wann sie begonnen hatupdatedAtstringusedWordsintegerworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, wann das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich je ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begonnen hatidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID der Legacy-Mannschaft, aus der dieser Arbeitsbereich importiert wurdekeystringMenschenlesbarer eindeutiger Bezeichner des ArbeitsbereichskeyIndexintegerEindeutig generierter Index, der verwendet wird, um einen eindeutigen Schlüssel zu generierennamestringName des ArbeitsbereichstrialStartedAtstringWenn dieser Arbeitsbereich je ein Abonnement mit einer Testphase hatte, enthält dies den Zeitpunkt, wann sie begonnen hatupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren können.importedFromLegacyTeamCustomerIdintegerveraltet: für Legacy-Import ID des Legacy-Teamkunden, von dem dies importiert wurdelegacyCustomerIdintegerID 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
}
}
Get workspace members
GET
/v1/users/{userId}/workspace-membersPfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
userId | string | Ja | userId |
Antwort
FeldTypBeschreibung
dataarray<object>
_embeddedobject
customerobject
emailstringE-Mail des KundenhadTrialbooleanWahr, wenn der Kunde jemals eine Testphase in einem beliebigen Arbeitsbereich 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 Adresse des AbrechnungskontaktsaddressLine2stringschreibgeschützt von Stripe synchronisiert: Zweite Zeile der Adresse des Abrechnungskontaktscitystringschreibgeschützt von Stripe synchronisiert: Stadt des Abrechnungskontaktscountrystringschreibgeschützt von Stripe synchronisiert: Land des AbrechnungskontaktscreatedAtstringcreatedByUserIdstringdefaultPaymentCardNumberLastFourDigitsstringdefaultPaymentMethodstringdefaultPaymentMethodCardBrandstringemailstringE-Mail-Adresse des AbrechnungskontaktsidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdenamestringName des AbrechnungskontaktspostalCodestringreadonly von Stripe synchronisiert: Postleitzahl des Abrechnungskontaktsstatestringreadonly von Stripe synchronisiert: Bundesland des AbrechnungskontaktsstripeCustomerIdstringStripe-Kundenkennung zu Abrechnungszwecken. Könnte optional werden, wenn wir andere Zahlungsanbieter hinzufügenupdatedAtstringcurrentSubscriptionobject
_embeddedobject
availableWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatnewPricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanobject
activebooleanAuf true setzen, wenn dieser Tarifplan bei bestehenden und neuen Abonnements konfiguriert werden kannbillingIntervalstringcategoryIdstringID der Kategorie, zu der dieser Plan gehörtdisplayNamestringName für interne Zwecke wie die Admin-UI oder HubSpot. Sollte Kunden nicht angezeigt werdenidstringID des TarifplansimportedFromLegacyIdintegerisDefaultbooleanIst dies der Standardplan für Neukunden?priceInEuronumberWie viel der Kunde für dieses Abonnement bezahlen musspricePerCurrencyobjectEine Zuordnung von Zeichenfolgenschlüsseln zu GleitkommawertenstripeBillingPortalEnabledbooleantrue, wenn Abonnements mit diesem Tarifplan im Stripe-Abrechnungsportal selbst verwaltet werden könnenstripePriceIdstringID des Preises in StripestripeTrackTokenMeterstringstripeTrackUsagebooleanVeraltettierintegertrialDaysintegerWie viele Testtage sind für diesen Plan zulässigpricingPlanCategoryobject
displayNamestringidstringtranslationKeystringactivebooleanFlagge, die anzeigt, ob das Abonnement aktiv ist. Abonnements können inaktiv werden, wenn sie angehalten werden oder mehr Mitglieder haben, als der aktuelle Plan zulässtactiveDiscountsarray<string>readonly von Stripe synchronisiert: true, wenn ein Rabatt für dieses Stripe-Abonnement aktiv istavailableWordsintegercreatedAtstringcreatedByUserIdstringcurrencystringendDatestringreadonly von Stripe synchronisiert: Datum, an dem dieses Abonnement automatisch storniert wirdidstringimportedFromLegacyCustomerIdintegerVeraltet: wird nur benötigt, solange der Import aus der Legacy-API noch aktiv ist ID des Legacy-Kunden, aus dem dieser importiert wurdeisGracePeriodbooleantrue, wenn das Abonnement zu einem festgelegten zukünftigen Datum storniert wirdisTrialbooleantrue, wenn dies derzeit eine Testphase 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 AbonnementsnextSubscriptionCycleStartstringreadonly von Stripe synchronisiert: Zeitstempel, wenn der nächste Abrechnungszyklus beginnt. Dies ist NICHT zwingend der Zeitstempel, an dem wir die Limits in unserem System zurücksetzen, da wir sie monatlich zurücksetzen, auch wenn dies ein Jahresplan istpaymentCardNumberLastFourDigitsstringreadonly von Stripe synchronisiert: Die letzten vier Ziffern der Zahlungskartennummer. Verwendet die Standardzahlung des Abonnements mit Fallback zur Zahlung aus der letzten RechnungpaymentMethodCardBrandstringpaymentPausedbooleanreadonly von Stripe synchronisiert: true, wenn die Zahlungserfassung für dieses Abonnement derzeit angehalten ist. Obwohl Stripe beabsichtigt, dass diese Abonnements aktiv bleiben und nur für eine Weile kostenlos sind, behandeln wir Abonnements mit angehaltener Zahlung als inaktivpaymentTypestringpricingPlanIdstringpricingPlanWordsintegerVeraltet: Felder sind vorhanden, bis das Frontend alle Verwendungen entfernt Standardwerte werden verwendet, es werden keine Anpassungen vorgenommen! Es wird immer gemeldet, dass der Arbeitsbereich einen unbegrenzten Plan hatsepaPaymentFailedbooleanreadonly von Stripe synchronisiert: Kennzeichen, das anzeigt, ob die SEPA-Zahlung fehlgeschlagen istspilloverWordsintegerstripeStatusstringstripeSubscriptionIdstringStripe-Abonnement-IDstripeSubscriptionItemIdstringID des Abonnementelements in Stripe (Abonnements sollten nur ein Element haben)trialEndsAtstringreadonly von Stripe synchronisiert: Zeitstempel, wenn die Testphase endettrialStartedAtstringreadonly von Stripe synchronisiert: wenn eine Testphase läuft, Datum, wann sie begonnen hatupdatedAtstringusedWordsintegerworkspaceIdstringID des Arbeitsbereichs, zu dem dieses Abonnement gehörtbillingContactIdstringID des Abrechnungskontakts für diesen ArbeitsbereichcreatedAtstringcreatedByUserIdstringcurrentSubscriptionIdstringID des aktuellen Abonnements für diesen ArbeitsbereichfirstMemberInvitedAtstringveraltet Zeitstempel, wann das erste Mitglied zum Arbeitsbereich eingeladen wurdefirstPaidSubscriptionAtstringWenn dieser Arbeitsbereich je ein bezahltes Abonnement hatte, enthält dies das Datum, an dem das erste begonnen hatidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren könnenimportedFromLegacyTeamIdintegerveraltet: Felder, die derzeit noch für das Legacy-System benötigt werden ID der Legacy-Mannschaft, aus der dieser Arbeitsbereich importiert wurdekeystringMenschenlesbarer eindeutiger Bezeichner des ArbeitsbereichskeyIndexintegerEindeutig generierter Index, der verwendet wird, um einen eindeutigen Schlüssel zu generierennamestringName des ArbeitsbereichstrialStartedAtstringWenn dieser Arbeitsbereich je ein Abonnement mit einer Testphase hatte, enthält dies den Zeitpunkt, wann sie begonnen hatupdatedAtstringcreatedAtstringcreatedByUserIdstringidstringimportedFromLegacyCustomerIdintegerveraltet Einige Kunden haben im Legacy-System keine zugewiesene Mannschaft als Besitzer, benötigen aber dennoch einen Arbeitsbereich, in den wir das Abonnement importieren können.importedFromLegacyTeamCustomerIdintegerveraltet: für Legacy-Import ID des Legacy-Teamkunden, von dem dies importiert wurdelegacyCustomerIdintegerID 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
}
}