Webservices

Die Liste der Accounts ermitteln, paginiert

curl http://hostname/webservice/accounts \
  -u webservice:apikey \
  -G \
  -d filter[per_page]='2' \
  -d filter[page]='1'

Mit dem Filter per_page kann die maximal zurückzugebende Anzahl Accounts begrenzt werden. Der Maximalwert von per_page ist 1000 (dies ist zugleich die Voreinstellung). Mit page kann der zu liefernde Abschnitt der Accountliste festgelegt werden, basierend auf der Abschnittgröße per_page.

Als Ergebnis wird ein XML-Dokument geliefert, das im Root-Element accounts, je nach vorhandener Datenmenge und der angegebenen Filterwerte, bis zu per_page Accounts enthält. Jeder Account ist in einem account-Element enthalten. Es werden nur die wichtigsten Account-Daten geliefert:

<?xml version="1.0" encoding="UTF-8"?>
<accounts type="array">
  <account>
    <home_page>www.example.org</home_page>
    <id type="integer">5</id>
    <name>ADSL Telecomm Ltd.</name>
    <parent_id nil="true"></parent_id>
    <phone>099-99 99 99 99</phone>
    <responsible1 nil="true"></responsible1>
    <responsible2 nil="true"></responsible2>
  </account>
  <account>
    <home_page nil="true"></home_page>
    <id type="integer">7</id>
    <name>Fantasia Ltd.</name>
    <parent_id nil="true"></parent_id>
    <phone nil="true"></phone>
    <responsible1 nil="true"></responsible1>
    <responsible2 nil="true"></responsible2>
  </account>
</accounts> 

Die Liste der Accounts mit ihren Standorten ermitteln

Es ist möglich, vom OMC zusätzlich zu den Accountdaten auch die Standorte anzufordern:

curl http://hostname/webservice/accounts \
  -u webservice:apikey \
  -G \
  -d include[]="locations"

Das OMC liefert die folgende XML-Antwort:

<?xml version="1.0" encoding="UTF-8"?>
<accounts type="array">
  <account>
    <home_page>www.example.org</home_page>
    <id type="integer">5</id>
    <name>ADSL Telecomm Ltd.</name>
    <parent_id nil="true"></parent_id>
    <phone>099-99 99 99 99</phone>
    <locations type="array">
      <location>
        <city>Berlin</city>
        <address1 nil="true"></address1>
        <address2>Unter den Linden 20</address2>
        <country>Germany</country>
        <postal_code>10117</postal_code>
        <account_id type="integer">1</account_id>
        <lng nil="true"></lng>
        <id type="integer">1</id>
        <want_assign_geoloc type="boolean">false</want_assign_geoloc>
        <lat nil="true"></lat>
        <state nil="true"></state>
        <address0 nil="true"></address0>
      </location>
      ...
    </locations>
    <responsible1 nil="true"></responsible1>
    <responsible2 nil="true"></responsible2>
  </account>
  <account>
    <home_page nil="true"></home_page>
    <id type="integer">7</id>
    <name>Fantasia Ltd.</name>
    <phone nil="true"></phone>
    <parent_id nil="true"></parent_id>
    <locations type="array"/>
    <responsible1 nil="true"></responsible1>
    <responsible2 nil="true"></responsible2>
  </account>
</accounts>

Einen Account finden

Die Daten eines bestimmten Accounts kann man über dessen ID direkt ermitteln:

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

Das OMC liefert, sofern der gesuchte Account existiert, ein XML-Dokument mit dessen Daten. Diese sind im Element account enthalten. Beispiel:

<?xml version="1.0" encoding="UTF-8"?>
<account>
  <home_page>www.example.org</home_page>
  <id type="integer">1</id>
  <name>Example AG</name>
  <parent_id type="integer" nil="true"></parent_id>
  <phone nil="true"></phone>
  <responsible1 nil="true"></responsible1>
  <responsible2 nil="true"></responsible2>
</account>

Auch hier kann man mit -d include[]="locations" die dem Account zugeordneten Standorte anfordern.

Existiert kein Account mit der angegebenen ID, liefert das OMC den Status-Code 404 sowie eine entsprechende Meldung im Element hash.

Account anlegen

Über einen POST-Request können Sie einen Account anlegen. Es muss mindestens dessen Name als der Parameter account[name] angegeben werden:

curl http://hostname/webservice/accounts \
  -u webservice:apikey \
  -X POST \
  --form-string account[name]='New Webservice AG' \
  --form-string account[home_page]='http://nws.ag' \
  --form-string account[phone]='+49-123-56789-0' \
  --form-string account[responsible1]='first_responsible' \
  --form-string account[responsible2]='another_responsible'

Das OMC gibt den kompletten Account zurück:

<?xml version="1.0" encoding="UTF-8"?>
<account>
  <name>New Webservice AG</name>
  <home_page>http://nws.ag</home_page>
  <id type="integer">5</id>
  <phone>+49-123-56789-0</phone>
  <parent_id nil="true"></parent_id>
  <responsible1>first_responsible</responsible1>
  <responsible2>another_responsible</responsible2>
</account>

Account ändern

Um Felder eines Accounts zu ändern, verwenden Sie einen PUT-Request unter Angabe der Account-ID in der URL sowie der zu ändernden Felder im Body des Requests:

curl curl http://hostname/webservice/accounts/id \
  -u webservice:apikey \
  -X PUT \
  --form-string account[home_page]='http://nws.ag' \
  --form-string account[phone]='+49-123-56789-0'

Wie beim Anlegen eines Accounts gibt das OMC den Account zurück.