Anzeigen von Teilnehmern in einer Veranstaltung.

45 views
Skip to first unread message

Björn Hempel

unread,
Sep 19, 2019, 1:05:17 PM9/19/19
to 42he API
Hallo zusammen.

Das Auflisten aller Veranstaltungen via /api/people/[id]/cal_events.json funktioniert bestens. Wie kann ich mir alle Personen/Teilnehmer zu einer Veranstaltung anzeigen lassen?

Zweite Frage: Das Hinzufügen einer Person zu einer Veranstaltung funktioniert auch bestens (via /api/cal_events/[id].json und cal_event_attendees_attributes). Wie kann ich Personen wieder von der Veranstaltungsliste löschen?

Danke!
Björn Hempel

Axel von Leitner

unread,
Sep 20, 2019, 8:29:18 AM9/20/19
to 42...@googlegroups.com
Hey Björn! 

Wir erweitern genau diesen Endpunkt gerade noch, das update ist aber noch nicht verfügbar und wird vermutlich auch noch ein paar Tage brauchen. 

Stand heute kannst du mit includes=people alle Personen oder mit includes=users (beides zusammen geht natürlich auch) die jeweiligen Objekte zum Event bekommen. 
Mit der Erweiterung wird es auch diese Route geben: cal_events/x/cal_event_attendees.json. 

Das Entfernen von cal_event_attendees wird dann auch mit dem Update gehen über einen delete call auf cal_events/x/cal_event_attendees/y.json. 

Ich würde dich hier also noch um ein wenig Geduld bitten und hoffe, dass wir das update bis nächsten Freitag live haben. Bis dahin würde ich mir deine Mail mal schieben und mich dann nochmal melden, wenn das okay für dich ist. 

Gruß
Axel

Axel von Leitner

42he GmbH
Marktstraße 10 - Gebäude E8
50968 Köln


CentralStationCRM.de - Einfaches Kontaktmanagement & CRM

CentralPlanner.de - Reservierungssoftware für kleine Unternehmen
CentralDesk.com - Support- und Hilfesystem in einfach

Geschäftsführung: Axel von Leitner 
Sitz: Köln, Registergericht: AG Köln, Handelsregister: HRB 70598


--
Sie erhalten diese Nachricht, weil Sie in Google Groups E-Mails von der Gruppe "42he API" abonniert haben.
Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an 42he+uns...@googlegroups.com.
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/42he/34b38392-a593-40ca-bf4e-b7ed50516fe2%40googlegroups.com auf.

Axel von Leitner

unread,
Oct 25, 2019, 10:47:45 AM10/25/19
to 42...@googlegroups.com
Hallo Björn, 

ich schulde dir hier noch eine Antwort & es hat leider länger gedauert, als ich zunächst gehofft habe. Sorry dafür! 

Folgende Routen sind mittlerweile verfügbar: 
api/cal_events/{cal_event_id}/cal_event_attendees.json
/api/cal_events/{cal_event_id}/cal_event_attendees/{id} (Get für den einzelnen Attendee, Put für das Update, Delete zum entfernen des Attendees vom CalEvent)


Wir haben für die CalEvents und die GroupCalendar Endpunkte erstmalig mit Swagger experimentiert bzw die Doku damit gebaut. Die Doku die wir damit erstellt haben ist noch nicht live, ich könnte dazu aber mal mit einem Kollegen sprechen die Tage, ob wir das nicht schonmal veröffentlichen sollten selbst wenn die meisten Endpunkte dort eben nicht auftauchen. Alles mit Swagger zu dokumentieren ist eine Fleißarbeit, die ich gerade nicht versprechen will. 

Viele Grüße
Axel

Axel von Leitner

42he GmbH
Marktstraße 10 - Gebäude E8
50968 Köln


CentralStationCRM.de - Einfaches Kontaktmanagement & CRM

CentralPlanner.de - Reservierungssoftware für kleine Unternehmen
CentralDesk.com - Support- und Hilfesystem in einfach

Geschäftsführung: Axel von Leitner 
Sitz: Köln, Registergericht: AG Köln, Handelsregister: HRB 70598

Björn Hempel

unread,
Nov 11, 2019, 7:56:14 AM11/11/19
to 42he API
Hallo Axel von Leitner!

Vielen Dank für Ihre Antwort und die Bereitstellung dieses neuen Endpunktes. Derzeit habe ich einen Erfolg von 50% damit. Folgendes habe ich probiert:

GET /api/cal_events/{cal_event_id}/cal_event_attendees.json . Ich erhalte wie erwartet eine Liste mit allen Teilnehmern:

[
   {
       "cal_event_attendee": {
           "id": "ace1...",
           "cal_event_id": "ace...",
           "user_id": ...,
           "person_id": ...,
           "email": "...",
           "status": "accepted",
           "created_at": "2019-10-08T16:19:44.000+02:00",
           "updated_at": "2019-10-08T16:19:44.000+02:00"
       }
   },
   {
       "cal_event_attendee": {
           "id": "ace2...",
           "cal_event_id": "ace...",
           "user_id": ...,
           "person_id": ...,
           "email": "...",
           "status": "invited",
           "created_at": "2019-10-08T16:19:44.000+02:00",
           "updated_at": "2019-10-08T16:19:44.000+02:00"
       }
   }
]

GET /api/cal_events/{ace...}/cal_event_attendees/{ace1...}.json . Ich erhalte wie erwartet den gewünschten Teilnehmer ace1.

DELETE /api/cal_events/{ace...}/cal_event_attendees/{ace1...}.json . Scheint zu funktionieren. Jedoch erhält man keine Rückgabe über den Erfolg (leerer Response). Ich würde mich hier allerdings strict an den http-Statuscode 200 halten. Von daher passt es.

GET /api/cal_events/{ace...}/cal_event_attendees/{ace1...}.json . Liefert nun:

{
   "error": "not-found",
   "description": "Couldn't find CalEventAttendee with 'id'=ace1 [WHERE `cal_event_attendees`.`cal_event_id` = ?]"
}

Ich denke mal das soll so sein und wäre für mich ok. Als Idee von mir könnten man evtl. die Fehlermeldung für den Endkunden noch etwas anpassen. Aber das ist nur eine Kleinigkeit.

Wie füge ich nun eine Person (wieder) hinzu?

PUT /api/cal_events/{ace...}/cal_event_attendees/{ace1...}.json liefert die gleiche Meldung wie GET und funktioniert leider nicht:

{
   "error": "not-found",
   "description": "Couldn't find CalEventAttendee with 'id'=ace1 [WHERE `cal_event_attendees`.`cal_event_id` = ?]"
}

Auch wäre es interessant, wie ich an diese cal_event_attendees.cal_event_id nur mit Kenntniss der Person (person.id) komme? Bzw. wäre auch sowas irgendwie möglich:

PUT /api/cal_events/{ace...}/persons/{person.id}.json ?

Danke für Ihre Antwort
Björn Hempel

Am Freitag, 25. Oktober 2019 16:47:45 UTC+2 schrieb Axel von Leitner:
Hallo Björn, 

ich schulde dir hier noch eine Antwort & es hat leider länger gedauert, als ich zunächst gehofft habe. Sorry dafür! 

Folgende Routen sind mittlerweile verfügbar: 
api/cal_events/{cal_event_id}/cal_event_attendees.json
/api/cal_events/{cal_event_id}/cal_event_attendees/{id} (Get für den einzelnen Attendee, Put für das Update, Delete zum entfernen des Attendees vom CalEvent)


Wir haben für die CalEvents und die GroupCalendar Endpunkte erstmalig mit Swagger experimentiert bzw die Doku damit gebaut. Die Doku die wir damit erstellt haben ist noch nicht live, ich könnte dazu aber mal mit einem Kollegen sprechen die Tage, ob wir das nicht schonmal veröffentlichen sollten selbst wenn die meisten Endpunkte dort eben nicht auftauchen. Alles mit Swagger zu dokumentieren ist eine Fleißarbeit, die ich gerade nicht versprechen will. 

Viele Grüße
Axel

Axel von Leitner

42he GmbH
Marktstraße 10 - Gebäude E8
50968 Köln


CentralStationCRM.de - Einfaches Kontaktmanagement & CRM

CentralPlanner.de - Reservierungssoftware für kleine Unternehmen
CentralDesk.com - Support- und Hilfesystem in einfach

Geschäftsführung: Axel von Leitner 
Sitz: Köln, Registergericht: AG Köln, Handelsregister: HRB 70598


Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an 42...@googlegroups.com.

Axel von Leitner

unread,
Nov 12, 2019, 2:12:02 AM11/12/19
to 42...@googlegroups.com
Hallo Herr Hempel, 

Danke für Ihr Feedback. 

Dass ein gelöschter Attendee und der Abruf der gelöschten ID einen 404 liefert ist gewünschtes Verhalten, ja. Wegen der Fehler-Description schauen wir nochmal, Danke für den Hinweis!

"Wie füge ich nun eine Person (wieder) hinzu?"

PUT /api/cal_events/{ace...}/cal_event_attendees/{ace1...}.json liefert die gleiche Meldung wie GET und funktioniert leider nicht:

=> hinzufügen läuft über einen POST und zwar auf den Endpunkt /api/cal_events/{cal_event_id}/cal_event_attendees.json

"Auch wäre es interessant, wie ich an diese cal_event_attendees.cal_event_id nur mit Kenntniss der Person (person.id) komme? Bzw. wäre auch sowas irgendwie möglich:"

Alle anstehenden Cal Events einer Person können Sie über die normale Personen-Route mit dem includes Parameter bekommen. Bsp: 
/api/people/{id}.json?includes=upcoming_cal_events

Ich hoffe das hilft Ihnen? 

Beste Grüße

Axel von Leitner

42he GmbH
Marktstraße 10 - Gebäude E8
50968 Köln


CentralStationCRM.de - Einfaches Kontaktmanagement & CRM

CentralPlanner.de - Reservierungssoftware für kleine Unternehmen
CentralDesk.com - Support- und Hilfesystem in einfach

Geschäftsführung: Axel von Leitner 
Sitz: Köln, Registergericht: AG Köln, Handelsregister: HRB 70598

Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an 42he+uns...@googlegroups.com.
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/42he/2cb303d8-5121-4bd7-bb7f-36bd1afc93bc%40googlegroups.com auf.

Björn Hempel

unread,
Nov 12, 2019, 1:52:56 PM11/12/19
to 42he API
Hallo Herr Axel von Leitner,

leider passt es auch damit nicht. Ich versuche mal zu erklären, was ich probiert habe.


Teilnehmer zu einem Event hinzufügen:

By the way: Der nachfolgende Post kann mehrfach ausgeführt werden und führt dazu, dass man auf der centralstationcrm.net GUI den Termin nicht mehr speichern kann: Dupletten-Fehler. Es ist auch nicht mehr möglich die doppelten Emailadressen zu entfernen.

POST /api/cal_events/{cal_id}/cal_event_attendees.json mit folgendem JSON-Body:

{
    "cal_event_attendee": {
        "person": "1220xxx", <---- Diese Person taucht später nicht in der Liste auf. Welche Funktion hat die ID hier?
        "email": "b...@test.de" <----- Warum muss die Emailadresse angegeben werden? Kann man das nicht weglassen?
    }
}

Anzeigen der hinzugefügten Teilnehmer:


[
    {
        "cal_event_attendee": {
            "id": "05d....",
            "cal_event_id": "319....",
            "user_id": null,
            "person_id": null,
            "email": "b...@test.de",
            "status": "new",
            "created_at": "2019-11-12T19:19:53.000+01:00",
            "updated_at": "2019-11-12T19:19:53.000+01:00"
        }
    },
    ----> Wo ist der User mit der ID 1220xxx ???
]


Um jetzt weitere Hin- und Hers zu vermeiden:

Können Sie bitte einen funktionierenden Curl-Befehle hier rein posten. Folgendes ist gegeben:

* email ist nicht vorhanden!

Folgende Aufgaben möchte ich nun tun:

* person.id dem Termin cal_event.id hinzufügen

Soweit ich das richtig ausprobiert habe, funktioniert das Listen und Löschen. Gern können sie diese Curl-Befehle noch hinzufügen, wenn Sie möchten.


Am Dienstag, 12. November 2019 08:12:02 UTC+1 schrieb Axel von Leitner:
Hallo Herr Hempel, 

Danke für Ihr Feedback. 

Dass ein gelöschter Attendee und der Abruf der gelöschten ID einen 404 liefert ist gewünschtes Verhalten, ja. Wegen der Fehler-Description schauen wir nochmal, Danke für den Hinweis!

"Wie füge ich nun eine Person (wieder) hinzu?"

PUT /api/cal_events/{ace...}/cal_event_attendees/{ace1...}.json liefert die gleiche Meldung wie GET und funktioniert leider nicht:

=> hinzufügen läuft über einen POST und zwar auf den Endpunkt /api/cal_events/{cal_event_id}/cal_event_attendees.json

"Auch wäre es interessant, wie ich an diese cal_event_attendees.cal_event_id nur mit Kenntniss der Person (person.id) komme? Bzw. wäre auch sowas irgendwie möglich:"

Alle anstehenden Cal Events einer Person können Sie über die normale Personen-Route mit dem includes Parameter bekommen. Bsp: 
/api/people/{id}.json?includes=upcoming_cal_events

Ich hoffe das hilft Ihnen? 

Beste Grüße

Axel von Leitner

42he GmbH
Marktstraße 10 - Gebäude E8
50968 Köln


CentralStationCRM.de - Einfaches Kontaktmanagement & CRM

CentralPlanner.de - Reservierungssoftware für kleine Unternehmen
CentralDesk.com - Support- und Hilfesystem in einfach

Geschäftsführung: Axel von Leitner 
Sitz: Köln, Registergericht: AG Köln, Handelsregister: HRB 70598


Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/42he/2cb303d8-5121-4bd7-bb7f-36bd1afc93bc%40googlegroups.com auf.

Björn Hempel

unread,
Nov 12, 2019, 2:01:42 PM11/12/19
to 42he API
PS: Offensichtlich funktioniert der nachfolgende Request für das Hinzufügen von Teilnehmern:

PUT /api/cal_events/{cal_id}.json mit folgendem JSON Body:

{
    "cal_event": {
        "cal_event_attendees_attributes": {
        "0": {
                "person_id": "1220xxx"
            }
        }
    }
}

Damit taucht die Person dann in der Liste der Teilnehmer in dem Tool auf. Jedoch teilweise mit komischen Emailadresse. Z.B. bei der ID 12201007. Da kommt beim Listen dann folgender Inhalt:

GET /api/cal_events/{cal_id}/cal_event_attendees.json

[
    {
        "cal_event_attendee": {
            "id": "49a...",
            "cal_event_id": "319...",
            "user_id": ...,
            "person_id": 12201007,
            "email": "steffen.be...",
            "status": "new",
            "created_at": "2019-11-12T19:57:34.000+01:00",
            "updated_at": "2019-11-12T19:57:34.000+01:00"
        }
    }
]

Die Zuordnung passt. Aber woher kommt diese Email-Adresse dort? Ich hätte sebastian.k... erwartet.

Axel von Leitner

unread,
Nov 13, 2019, 1:05:48 AM11/13/19
to 42...@googlegroups.com
Anlegen über den Endpunkt /api/cal_events/{cal_event_id}/cal_event_attendees.json :

Hierfür braucht es nach meinen Tests nur eine valide person_id, die E-Mail wird dann in der Tat autovervollständigt. Falls es mehrere gibt in der Person (und das kann ja sein) könnte / sollte man das aber angeben. 

{
  "cal_event_attendee": {
    "person_id": 536379
  }
}

CURL Bsp:
curl -X POST "http://SUBDOMAIN.cscrm.test/api/cal_events/00c7c9e4-4e9c-11e8-96c5-0cc47a45bfa3/cal_event_attendees?apikey=APIKEY" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"cal_event_attendee\": { \"person_id\":PERSON-ID }}"

(drei Platzhalter ersetzen darin)

Sie hatten oben person anstatt person_id verwendet, wenn ich das richtig sehe. Über die nested attributes als PUT auf das CalEvent selber sollte das aber auch funktionieren, wie Sie ja beschreiben. 

Ihre Fehler im Fortlauf der Nutzung des CalEvent Endpunkts kann ich in Ihren Live-Daten gerade leider nicht mehr rekonstruieren, da Sie scheinbar noch weiter damit gearbeitet haben. Ihr CalEvent mit der ID 3198c3c... hat gerade zB keine Attendees mehr. 
Dass Sie in unserer GUI noch eine E-Mail Adresse gesehen haben kann ich mir nur mit Caching-Gründen erklären. Haben Sie den Attendee zu dem CalEvent dann nochmal gelöscht? Dann könnten wir überprüfen, ob die touchkette für das Caching genau dabei korrekt funktioniert oder eben nicht. 
Ohne dass der updated_at Timestamp vom CalEvent geändert wird kann es zB auf der "Aufgaben" Übersicht in Ihrer GUI sein, dass die Anzeige nicht aktualisiert wird, weil sie noch gecached ist. 

Ich hoffe damit kommen Sie jetzt weiter. Am Donnerstag werde ich mit einem Kollegen sprechen, ob wir nicht unsere Swagger Doku für diesen Endpunkt schonmal live stellen können. Ich denke das hätte einiges einfacher gemacht. 

Beste Grüße 

Axel von Leitner

42he GmbH
Marktstraße 10 - Gebäude E8
50968 Köln


CentralStationCRM.de - Einfaches Kontaktmanagement & CRM

CentralPlanner.de - Reservierungssoftware für kleine Unternehmen
CentralDesk.com - Support- und Hilfesystem in einfach

Geschäftsführung: Axel von Leitner 
Sitz: Köln, Registergericht: AG Köln, Handelsregister: HRB 70598
--
Sie erhalten diese Nachricht, weil Sie in Google Groups E-Mails von der Gruppe "42he API" abonniert haben.
Wenn Sie sich von dieser Gruppe abmelden und keine E-Mails mehr von dieser Gruppe erhalten möchten, senden Sie eine E-Mail an 42he+uns...@googlegroups.com.
Wenn Sie diese Diskussion im Web verfolgen möchten, rufen Sie https://groups.google.com/d/msgid/42he/3451ee78-66dc-40d4-885e-049652b5e39f%40googlegroups.com auf.

Björn Hempel

unread,
Nov 13, 2019, 4:40:58 AM11/13/19
to 42he API
Okay, perfekt. Danke. Dann lag das an dem Feld person, welches person_id lauten muss. Das habe ich nur geraten. Funktioniert jetzt. Das eigenartige Beispiel mit der falschen Emailadresse kann ich auch mit diesem Endpunkt nachstellen.

Wenn Sie sich das calEvent 3198c3c anschauen, dann gibt es dort nur einen zugeordneten Teilnehmer. Dieser hat eine Emailadresse, die dort nicht hingehört.

Ansonsten ja. Ich arbeite gerade an diesem Termin und habe gestern alle Teilnehmer via API wieder entfernt (das geht). Wenn Sie das Problem mit der Webseite nachstellen wollen: Sie können problemlos immer wieder ein und dieselbe Emailadresse hinzufügen (Dublette). Z.B. mit:

POST /api/cal_events/{cal_event_id}/cal_event_attendees.json

{
    "cal_event_attendee": {
        "email": "te...@test.de"
    }
}

Sobald Sie das mit der gleichen Emailadresse mehrmals gemacht haben, ist es nicht mehr möglich in der Weboberfläche den Termin zu bearbeiten. Auch nicht durch Entfernen der doppelten Emailadressen.

Ich hoffe das hilft Ihnen so auch weiter.

Besten Dank. Ich melde mich, wenn ich wieder nicht weiterkomme. ;)

Björn Hempel


Am Donnerstag, 19. September 2019 19:05:17 UTC+2 schrieb Björn Hempel:
Reply all
Reply to author
Forward
0 new messages