Gelöst API Anfragen erstellen
-
Hallo, ich studiere gerade die API und bin recht begeistert über die Möglichkeiten, die dies bietet. Ich suche allerdings eine Pfad, um Anfragen an Ehrenamtliche zu schicken. Das fehlt irgendwie oder habe ich etwas übersehen?
Aus meiner Sicht fehlt folgender Pfad:
PUT
/events/{eventId}/services/{serviceId}/person/{personId}
Send request to person for a service at an event.Die App kann das ja jetzt auch, also muss es auch einen API Aufruf dafür geben
Wir versuchen mit einer eigenen Web App das Scheduling deutlich zu vereinfachen. Das sind im Moment sowohl auf der ChurchTools Seite oder in der App zu viele Schritte.Die folgenden Pfade habe ich gefunden:
- GET /persons/{personId}/servicerequests Get all service requests for a person
- DELETE /persons/{personId}/servicerequests/{requestId} Decline a service request for a person
- GET /persons/{personId}/servicerequests/{requestId} Get a specific service request for a person
- PUT /persons/{personId}/servicerequests/{requestId} Agree to a service request for a person
- POST /persons/{personId}/servicerequests/{requestId}/undo Undo last service request action
-
@cabcookie jep, die ist noch nicht dokumentiert
ich bin mir grade nicht 100%ig sicher, aber diese müsste es eigentlich sein:
/events/{eventId}/eventservices
payload:
{ eventId: number; eventServiceId: number; name: string; agreed: boolean; comment?: string }
-
@jziegeler Danke Dir.
Es gibt ein paar FolgefragenWenn ich auf eine offene Position klicke, werden mir in ChurchTools alle Namen angezeigt, die für die Position passen; das wird bei uns über die Gruppenzuordnung errechnet und über die Tags. Ich könnte das selber errechnen, aber das wären mehrere API Aufrufe. Wahrscheinlich habt ihr einen API Aufruf, der das direkt erledigt. Wie muss der lauten?
Beispiel: für Sonntag, 23. Juli 12 Uhr (Event id: 1800) suche ich einen Sound Engineer (serviceId: 26). Wie müssen Pfad, Request (GET, PUT, POST, …) und Payload aussehen (Query Params oder Request Body)?Im nächsten Schritt habe ich „Carsten Koch“ auserkoren als Sound Engineer (der Glückliche hat die personId 622). Wie muss nun der Request aussehen?
-
@cabcookie
GET /events/{eventId}/services/{serviceId}/possiblepersons
-
@jziegeler fantastisch. Vielen lieben Dank dir.
Jetzt nur noch die letzte FrageMit welchem Request schlage ich Person 622 für den Event 1800 und den Service mit der ID 26 ein?
-
@cabcookie das ist für mich grade nicht direkt ersichtlich, muss ich mir morgen mal anschauen
-
@jziegeler
Ich hab’s gefunden (ein Dank geht an Charles Proxy für iOS)
PUT /api/persons/622/servicerequests/70526
Wobei 70526 the ID für eventServices ist.
Damit kann ich dann morgen weiter machen. -
@cabcookie Weißt du auch, wie ich statt einen zu einem Dienst vorzuschalgen, ihn direkt besetze?
Die Frage habe ich vor neun Tagen dem Support geschickt und noch keine passende Antwort erhalten. Ich wusste damals auch noch nicht, wie man jemanden vorschlägt. Das hast du uns ja nun verraten. Als Workaround könnte ich wahrscheinlich jemanden vorschlagen und dann in einem weiteren API-Aufruf bestätigten.
-
@cabcookie Selbst das Anfragen funktioniert bei mir nicht. Ich bekomme das hier zurück:
{"message":"There are validation errors","messageKey":"validation.error","translatedMessage":"Die eingegebenen Daten waren nicht korrekt.","args":[],"errors":[{"fieldId":"agreed","message":"Eingabe muss TRUE oder FALSE sein.","messageKey":"validation.boolean","args":{"input":null,"true":["true",true,1,"1"],"false":["false",false,0,"0"]}}]}
-
@cabcookie In der Doku steht "Agree to a service request for a person" bei "PUT /persons/{personId}/servicerequests/{requestId}". Das heißt doch eher, dass man hiermit einer bereits gestellten Anfrage zustimmt, als dass man eine neue Anfrage eröffnet.
@Andy Kannst du die Frage hier wieder öffnen? Ich glaube nicht, dass sie schon gelöst ist.
-
@jjb du kannst mit der Funktion sowohl vorschlagen als auch direkt besetzen.
/api/persons/personId/servicrequests/eventServiceId, { agreed: true }
besetzt den Dienst direkt. Das sagt auch deine Fehlermeldung, dass dort im payloadagreed
nicht gesetzt wird. Schickst dufalse
mit ist es eine Anfrage -
@jziegeler Vielen Dank. Das hat funktioniert!