Entwickler, sei gegrüßt! Die mite.api freut sich auf deine Hacks. Welche Funktionen wie zur Verfügung stehen, erfährst du hier im Dokumentationsbereich.

Bitte beachten: Projekte können von Zeiterfassern nicht modifiziert, erstellt oder gelöscht werden. Lesen können Zeiterfasser nur die für sie freigegebenen Projekte.

Alle aktiven Projekte auflisten

Liste alle aktiven Projekte sortiert nach deren Namen auf:

GET /projects.xml
GET /projects.json

Parameter

name Gibt nur die Einträge zurück, deren Namen den übergebenen String enthalten. Groß- und Kleinschreibung wird ignoriert.
customer_id Filtere die Projekte nach dem Kunden. Erlaubt sind eine einzelne ID sowie mehrere durch Komma getrennte IDs.
limit Mit dem Parameter limit ist es möglich, die maximale Anzahl der ausgegebenen Einträge zu begrenzen.
Default: unbegrenzt
page In Kombination mit dem Parameter limit können Folgeseiten ausgegeben werden.
Default: 1

Antwort

Status: 200 OK
[
   {
      "project": {...}
   },
   {
      "project": {...}
   }
]
Status: 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<projects type="array">
   <project>
      ...
   </project>
   <project>
      ...
   </project>
</projects>

Alle archivierten Projekte auflisten

Liste alle archivierten Projekte sortiert nach deren Namen auf:

GET /projects/archived.xml
GET /projects/archived.json

Es können die gleichen Parameter wie bei den aktiven Projekten verwendet werden.

Einzelnes Projekt anzeigen

Rufe ein Projekt nach dessen id auf:

GET /projects/:id.xml
GET /projects/:id.json

Antwort

Status: 200 OK
{
   "project": {
      "id": 643,
      "name": "Open-Source",
      "note": "valvat, memento et all.",
      "customer_id": 291,
      "customer_name": "Yolk",
      "budget": 0,
      "budget_type": "minutes",
      "hourly_rate": 6000,
      "archived": false,
      "active_hourly_rate": "hourly_rate",
      "hourly_rates_per_service": [
         {
            "service_id": 31272,
            "hourly_rate": 4500
         },
         {
            "service_id": 149228,
            "hourly_rate": 5500
         }
      ],
      "created_at": "2011-08-17T12:06:57+02:00",
      "updated_at": "2015-02-19T10:53:10+01:00"
   }
}
Status: 200 OK
<?xml version="1.0" encoding="UTF-8"?>
<project>
   <id type="integer">643</id>
   <name>Open-Source</name>
   <note>valvat, memento et all.</note>
   <budget type="integer">0</budget>
   <budget-type>minutes</budget>
   <archived type="boolean">false</archived>
   <customer-id type="integer">219</customer-id>
   <customer-name>Yolk</customer-name>
   <hourly-rate type="integer">6000</hourly-rate>
   <active-hourly-rate>hourly_rate</active-hourly-rate>
   <hourly-rates-per-service type="array">
      <hourly-rate-per-service>
         <service-id type="integer">31272</service-id>
         <hourly-rate type="integer">4500</hourly-rate>
      </hourly-rate-per-service>
      <hourly-rate-per-service>
         <service-id type="integer">149228</service-id>
         <hourly-rate type="integer">5500</hourly-rate>
      </hourly-rate-per-service>
   </hourly-rates-per-service>
   <updated-at type="datetime">2011-08-17T12:06:57+02:00</updated-at>
   <created-at type="datetime">2015-02-19T10:53:10+01:00</created-at>
</project>

Ein Projekt erstellen

Erstellt ein neues Projekt; alle Attribute – bis auf name – sind optional.

POST /projects.xml
POST /projects.json

Attribute

name Darf nicht leer sein!
note Default: "" (leerer String)
customer_id Default: null (keinem Kunden zugeordnet)
budget Budget in Minuten oder Cents (je nach budget_type)
Default: 0 (kein Budget)
budget_type "minutes" (Default), "minutes_per_month", "cents" oder "cents_per_month"
active_hourly_rate null (Default), "hourly_rate" oder "hourly_rates_per_service"
hourly_rate Stundensatz in Cent (ein Hundertstel der Basiseinheit, unabhängig von der Währung). Wird verwendet wenn active_hourly_rate auf "hourly_rate" gesetzt ist.
Default: null
hourly_rates_per_service Liste der Stundensätze je nach Leistung. Wird verwendet wenn active_hourly_rate auf "hourly_rates_per_service" gesetzt ist.
Default: [] (leerer Array)
archived true oder false
Default: false

Anfrage

Content-Type: application/json
{
   "project": {
      "name": "Website",
      "budget": 45000,
      "budget_type": "cents"
   }
}
Content-Type: application/xml
<project>
   <name>Website</name>
   <budget>45000</budget>
   <budget-type>cents</budget-type>
</project>

Antwort

Status: 201 Created
Location: https://demo.mite.de/projects/583241.json
{
   "project": {
      "id": 583241,
      "name": "Website",
      "note": "",
      "customer_id": null,
      "budget": 45000,
      "budget_type": "cents",
      "hourly_rate": null,
      "archived": false,
      "active_hourly_rate": null,
      "hourly_rates_per_service": [],
      "created_at": "2015-10-15T11:40:49+02:00",
      "updated_at": "2015-10-15T11:40:49+02:00"
   }
}
Status: 201 Created
Location: https://demo.mite.de/projects/583241.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
   <id type="integer">583241</id>
   <name>Website</name>
   <note></note>
   <budget type="integer">36000</budget>
   <budget-type>cents</budget>
   <archived type="boolean">false</archived>
   <customer-id type="integer" nil="true"/>
   <hourly-rate type="integer" nil="true"/>
   <active-hourly-rate nil="true"/>
   <hourly-rates-per-service type="array"/>
   <updated-at type="datetime">2015-10-15T11:40:49+02:00</updated-at>
   <created-at type="datetime">2015-10-15T11:40:49+02:00</created-at>
</project>

Ein Projekt bearbeiten

Aktualisiere ein Projekt mit den übergebenen Attributen:

PATCH /projects/:id.xml
PATCH /projects/:id.json

Anfrage

Content-Type: application/json
{
   "project": {
      "archived": true
   }
}
Content-Type: application/xml
<project>
   <archived>true</archived>
</project>

Antwort

Status: 200 OK
{leer}

Wenn du eines der für den Stundensatz ausschlaggebenden Attribute (active_hourly_rate, hourly_rate und/oder hourly_rates_per_service) änderst, wird diese Änderung sich per Default nur auf Zeiteinträge auswirken, die von jetzt an erstellt werden. Wenn du den neuen Stundensatz auch auf bereits vorhandene Zeiteinträge anwenden möchtest, setze bitte das zusätzliche Attribut update_hourly_rate_on_time_entries auf true:

Content-Type: application/json
{
   "project": {
      "hourly_rate": 12000,
      "update_hourly_rate_on_time_entries": true
   }
}
Content-Type: application/xml
<project>
   <hourly-rate>12000</hourly-rate>
   <update-hourly-rate-on-time-entries>12000</update-hourly-rate-on-time-entries>
</project>

Ein Projekt löschen

Lösche ein Projekt:

DELETE /projects/:id.xml
DELETE /projects/:id.json

Antwort

Status: 200 OK
{leer}

Du kannst ein Projekt nur löschen, wenn ihm keine Zeiteinträge zugeordnet sind. Ansonsten erhältst du folgende Antwort:

Status: 422 Unprocessable Entity
{
   "error": "Dieses Projekt kann nicht gelöscht werden, \
da an ihm Zeiteinträge hängen. Archiviere es stattdessen."
}
Status: 422 Unprocessable Entity
<?xml version="1.0" encoding="UTF-8"?>
<errors>
   <error>Dieses Projekt kann nicht gelöscht werden, \
da an ihm Zeiteinträge hängen. Archiviere es stattdessen.</error>
</errors>