Webservices

Mit dem Web-Service-API des OMC können Sie die Liste der Anfragen einer Person ermitteln. Sie können ferner auf jede Anfrage einzeln über ihre jeweilige ID zugreifen, optional unter Angabe der betreffenden Person, um den Zugriff nur auf diese Person einzuschränken.

Eine Anfrage besteht aus den initial erfassten Daten (wie die anfragende Person) sowie Erweiterungen, die nachträglich zur Anfrage hinzugefügt wurden, den so genannten Tagebucheinträgen. Diese können gesammelt als Liste abgerufen werden.

Ferner können einer Anfrage Links zugeordnet sein, die als Liste, aber auch einzeln abgerufen werden können.

Sowohl Anfragen als auch Erweiterungen und Links können mit dem Webservice-API auch angelegt werden.

Anfragen ermitteln, anlegen und ändern

Anfragen eines Accounts ermitteln

curl http://hostname/webservice/inquiries \
  -u webservice:apikey \
  -G \
  -d filter[account_id]=1

Das OMC liefert alle Anfragen des Accounts im Element inquiries, in dem je Anfrage ein inquiry-Element enthalten ist:

<?xml version="1.0" encoding="UTF-8"?>
<inquiries type="array">
  <inquiry>
    <agent>smith</agent>
    <closed type="boolean">false</closed>
    <contact_id type="integer">2</contact_id>
    <created_at type="datetime">2009-08-12T10:19:06+02:00</created_at>
    <email_cc nil="true"></email_cc>
    <id type="integer">3</id>
    <kind>support case</kind>
    <owner>root</owner>
    <state>created</state>
    <summary>Where is Flip?</summary>
    <tentative type="boolean">true</tentative>
    <updated_at type="datetime">2009-08-12T10:19:06+02:00</updated_at>
  </inquiry>
  ...
</inquiries>

Liste der Anfragen einer Person ermitteln

curl http://hostname/webservice/inquiries \
  -u webservice:apikey \
  -G \
  -d filter[contact_id]=1

Das Ergebnis enthält die Anfragedaten in einem inquiries-Element. Darin ist jede Anfrage der angegebenen Person in einem inquiry-Element enthalten.

<?xml version="1.0" encoding="UTF-8"?>
<inquiries type="array">
  <inquiry>
    <agent>smith</agent>
    <closed type="boolean">false</closed>
    <contact_id type="integer">1</contact_id>
    <created_at type="datetime">2008-11-19T14:00:27+01:00</created_at>
    <email_cc nil="true"></email_cc>
    <id type="integer">407</id>
    <kind>support case</kind>
    <owner>root</owner>
    <state>created</state>
    <summary>Anfrage nach Produkt-Informationen</summary>
    <tentative type="boolean">true</tentative>
    <updated_at type="datetime">2008-11-19T14:21:11+01:00</updated_at>
  </inquiry>
  ...
</inquiries>

Eine Anfrage auslesen

curl http://hostname/webservice/inquiries/id \
  -u webservice:apikey

Das Ergebnis enthält die angeforderte Anfrage im inquiry-Element:

<?xml version="1.0" encoding="UTF-8"?>
<inquiry>
  <agent>smith</agent>
  <closed type="boolean">false</closed>
  <contact_id type="integer">1</contact_id>
  <created_at type="datetime">2008-11-19T14:00:27+01:00</created_at>
  <email_cc nil="true"></email_cc>
  <id type="integer">407</id>
  <kind>support case</kind>
  <owner>root</owner>
  <state>created</state>
  <summary>Anfrage nach Produkt-Informationen</summary>
  <tentative type="boolean">true</tentative>
  <updated_at type="datetime">2008-11-19T14:21:11+01:00</updated_at>
</inquiry>

Eine Anfrage anlegen

Eine Anfrage ist immer einer Person zugeordnet. Die Person, der eine neue Anfrage zugeordnet werden soll, kann über den Parameter inquiry[contact_id] spezifiziert werden. Ferner kann zusätzlich ein `diary`-Eintrag über den Wert `new_diary` definiert werden.

curl http://hostname/webservice/inquiries \
  -u webservice:apikey \
  -X POST \
  --form-string inquiry[contact_id]=16 \
  --form-string inquiry[summary]="Titel der Anfrage" \
  --form-string inquiry[new_diary][summary]='first diary' \
  --form-string inquiry[new_diary][notes]=newdiarynotes

Als Ergebnis wird die Anfrage zurückgegeben.

Eine Anfrage ändern

Mit dem folgenden PUT-Request können Sie eine Anfrage ändern (jedoch nicht erweitern, siehe unten). Spezifizieren Sie die zu ändernden Felder der Anfrage.

curl http://hostname/webservice/inquiries/id \
  -u webservice:apikey \
  -X PUT \
  --form-string inquiry[state]=Bearbeitet

Als Ergebnis wird die Anfrage zurückgegeben.

Tagebucheinträge

Die Tagebucheinträge einer Anfrage ermitteln

Jede Ergänzung zu einer Anfrage wird als Tagebucheintrag dieser Anfrage gespeichert. Tagebucheinträge lassen sich nachträglich weder ändern noch löschen. Die öffentlichen Tagebucheinträge einer Anfrage lassen sich folgendermaßen ermitteln:

curl http://hostname/webservice/diaries \
  -u webservice:apikey \
  -G \
  -d filter[inquiry_id]=4

Die Tagebucheinträge sind als diary-Elemente im diaries-Element enthalten:

<?xml version="1.0" encoding="UTF-8"?>
<diaries type="array">
  <diary>
    <account_id type="integer" nil="true"></account_id>
    <contact_id type="integer" nil="true"></contact_id>
    <created_at type="datetime">2009-08-12T10:19:05+02:00</created_at>
    <created_by></created_by>
    <diary_type>call</diary_type>
    <id type="integer">2</id>
    <inquiry_id type="integer">2</inquiry_id>
    <internal>false</internal>
    <notes>The bear has eaten all the honey :(</notes>
    <send_email type="boolean">false</send_email>
    <summary>initial entry's title</summary>
    <updated_at type="datetime">2009-08-12T10:19:05+02:00</updated_at>
    <updated_by></updated_by>
  </diary>
</diaries>

Einen Tagebucheintrag zu einer Anfrage hinzufügen

Mit dem folgenden Request kann zu einer Anfrage ein Tagebucheintrag hinzugefügt werden.

curl http://hostname/webservice/diaries \
  -u webservice:apikey \
  -X POST \
  --form-string dairy[inquiry_id]=1 \
  --form-string diary[type]=web \
  --form-string diary[internal]=false \
  --form-string diary[title]="Kommentar abgegeben" \
  --form-string diary[notes]="Super Seite!"

Als Ergebnis wird der neue Tagebucheintrag zurückgegeben:

<?xml version="1.0" encoding="UTF-8"?>
<diary>
  <account_id type="integer">1</account_id>
  <contact_id type="integer">5</contact_id>
  <created_at type="datetime">2010-07-13T15:25:41+02:00</created_at>
  <created_by>webservice</created_by>
  <diary_type>web</diary_type>
  <id type="integer">12</id>
  <inquiry_id type="integer">1</inquiry_id>
  <internal type="boolean">false</internal>
  <notes>Super Seite!</notes>
  <send_email type="boolean">false</send_email>
  <summary>Kommentar abgegeben</summary>
  <updated_at type="datetime">2010-07-13T15:25:41+02:00</updated_at>
  <updated_by>webservice</updated_by>
</diary>

Jeder Anfrage kann eine beliebige Anzahl Links zugeordnet sein, die Sie mit den folgenden Requests ermitteln, ergänzen, ändern und löschen können.

Die Liste der Links einer Anfrage ermitteln

curl http://hostname/webservice/inquiries/id/links \
  -u webservice:apikey

Die Links sind als einzelne link-Elemente im Element links enthalten:

<?xml version="1.0" encoding="UTF-8"?>
<links type="array">
  <link>
    <id type="integer">1</id>
    <title>Bear photo</title>
    <url>http://cdkenterprises.com/coloring/Valentines/images/BearHoney.gif</url>
  </link>
  ...
</links>

Einen einzelnen Link einer Anfrage ermitteln

curl http://hostname/webservice/inquiries/inquiry_id/links/id \
  -u webservice:apikey

Der Rückgabewert ist der einzelne Link:

<?xml version="1.0" encoding="UTF-8"?>
<link>
  <id type="integer">1</id>
  <title>Bear photo</title>
  <url>http://cdkenterprises.com/coloring/Valentines/images/BearHoney.gif</url>
</link>

Einen Link zu einer Anfrage hinzufügen

curl http://hostname/webservice/inquiries/id/links \
  -u webservice:apikey \
  -X POST \
  --form-string title="Example AG" \
  --form-string link[url]=http://www.example.org

Als Ergebnis wird der neue Link wie bei der Abfrage zurückgegeben.

Einen Link einer Anfrage ändern

Um einen Link zu ändern, benötigen Sie dessen ID. Geben Sie die zu ändernden Felder des Links im Request an.

curl http://hostname/webservice/inquiries/inquiry_id/links/id \
  -u webservice:apikey \
  -X PUT \
  --form-string link[title]="Example AG, Berlin"

Als Ergebnis wird der modifizierte Link wie bei der Abfrage zurückgegben.

Einen Link einer Anfrage löschen

curl http://hostname/webservice/inquiries/inquiry_id/links/id \
  -u webservice:apikey \
  -X DELETE

Als Ergebnis wird eine entsprechende Meldung zurückgegeben:

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <message>Link deleted</message>
</hash>