Skip to content

Beschreibung der REST API

IHFSchwarz edited this page Mar 7, 2018 · 22 revisions

Die Festlegung bzw. Angabe des Identikators (meist der Name) erfolgt über die URI und nicht über die JSON Repräsentation. Eventuelle Angaben werden ignoriert.

Unter http://DAPNET_CORE_SERVER.org/application.wadl lässt sich eine automatisch generierte Beschreibung der Schnittstelle in der Web Application Description Language (WADL) abrufen.

ActivationResource

Methoden

  • POST

URI

http://DAPNET_CORE_SERVER.org/activation

Berechtigungen

  • USER_ONLY zum Aussenden einer Aktivierung

Beschreibung

  • Erwartet JSON-Repräsentation einer Aktivierung
  • timestamp wird intern gesetzt, wird also beim POST nicht angegeben
  • Die Aktivierung wird nicht gespeichert, sondern nur direkt ausgesendet

Repräsentation

{
    "number": 12345,
    "transmitterGroupNames": [
        "group"
    ],
    "timestamp": "Dec 24, 2015 1:37:31 PM"
}

CallSignResource

Methoden

  • GET
  • PUT
  • DELETE

URI

http://DAPNET_CORE_SERVER.org/callsigns/[NAME]

Berechtigungen

  • USER_ONLY zum Lesen und Erstellen
  • OWNER_ONLY zum Aktualisieren und Löschen
  • pagers werden für USER nicht angezeigt

Beschreibung

  • Erwartet JSON-Repräsentation eines CallSigns
  • GET Abfrage ohne [NAME] liefert alle CallSigns

Repräsentation

{
    "name": " name ",
    "description": " description ",
    "numeric": false,
    "pagers": [{
        "number": 1234567,
        "name": " name "
    }],
    "ownerNames": [
        "user "
    ]
}

CallResource

Methoden

  • GET
  • POST

URI

http://DAPNET_CORE_SERVER.org/calls[?ownerName=NAME]

Berechtigungen

  • USER_ONLY zum Erstellen
  • OWNER_ONLY zum Anzeigen der eigenen Calls
  • ADMIN_ONLY zum Anzeigen aller Calls

Beschreibung

  • Erwartet JSON-Repräsentation eines Calls
  • timestamp und ownerName werden intern gesetzt, werden also beim POST nicht angegeben
  • GET Abfrage ohne ?ownerName=NAME liefert alle Calls

Repräsentation

{
    "text ": "text",
    "callSignNames": [
        "callSignName"
    ],
    "transmitterGroupNames": [
        "transmitterGroupName"
    ],
    "emergency": false,
    "timestamp": "Jul 30, 2015 10:57:45 AM",
    "ownerName": "user"
}

CoreResource

Methoden

  • GET

URI

http://DAPNET_CORE_SERVER.org/core

  • /version: Liefert die Version der DAPNET Cores und der API
  • /core_version: Liefert die Version der DAPNET Cores
  • /api_version: Liefert die Version der REST API

Berechtigungen

  • EVERYBODY

Repräsentation

  • /version
{
    "core": "1.1.3.10",
    "api": "1.1.3"
}
  • /core_version und /api_version
{
    "version": "1.1.3"
}

NewsResource

Methoden

  • GET
  • POST

URI

http://DAPNET_CORE_SERVER.org/news[?rubricName=NAME]

Berechtigungen

  • OWNER_ONLY zum Anzeigen von News aus der eigenen Rubric
  • OWNER_ONLY zum Erstellen von News in der eigenen Rubric
  • ADMIN_ONLY zum Anzeigen aller News

Beschreibung

  • Erwartet JSON-Repräsentation einer News
  • timestamp und ownerName werden intern gesetzt, werden also beim POST nicht angegeben
  • GET Abfrage ohne [?rubricName=NAME] liefert alle News

Repräsentation

{
    "text": "text",
    "rubricName": "rubricName",
    "number": 1,
    "timestamp": "Jul 26, 2015 3:24:14 PM",
    "ownerName": "user"
}

NodeResource

Methoden

  • GET
  • PUT
  • DELETE

URI

http://DAPNET_CORE_SERVER.org/nodes/[NAME]

Berechtigungen

  • USER_ONLY zum Lesen der vorhandenen News
  • ADMIN_ONLY zum Erstellen, Aktualisieren und Löschen
  • key und address werden für USER nicht angezeigt

Beschreibung

  • Erwartet JSON-Repräsentation eines Nodes
  • key wird intern als Hash gespeichert, beim Erstellen wird die Angabe des gewünschten Keys im Klartext erwartet
  • address wird automatisch ermittelt und muss beim Erstellen nicht angegeben werden
  • GET Abfrage ohne [NAME] liefert alle Nodes (bei nicht verbundenen Knoten wird keine IP und kein Port geliefert).
  • Mögliche Status: PUT:ONLINE,SUSPENDED;GET:ONLINE,SUSPENDED,ERROR

Repräsentation

GET

{
    "name": "name",
    "longitude": "-45.12345678",
    "latitude": "56.12345678",
    "address": {
        "ip_addr": "192.168.000.001",
        "port": 7800
    },
    "status": "SUSPENDED",
    "ownerNames": [
         "dh3wr",
         "dj7lc"
     ],
     "version": "1.1.3.10"
}

PUT

{
    "name": "name",
    "longitude": "-45.12345678",
    "latitude": "56.12345678",
    "address": {
        "ip_addr": "192.168.000.001",
        "port": 7800
    },
    "status": "SUSPENDED",
    "ownerNames": [
         "dh3wr",
         "dj7lc"
     ]
}

RubricResource

Methoden

  • GET
  • PUT
  • DELETE

URI

http://DAPNET_CORE_SERVER.org/rubrics/[NAME]

Berechtigungen

  • USER_ONLY zum Lesen
  • OWNER_ONLY zum Aktualisieren und Löschen
  • ADMIN_ONLY zum Erstellen

Beschreibung

  • Erwartet JSON-Repräsentation einer Rubric
  • GET Abfrage ohne [NAME] liefert alle Rubrics

Repräsentation

{
    "name": "name",
    "number": 1,
    "transmitterGroupNames": [
        "transmitterGroupName"
    ],
    "label": "label",
    "ownerNames": [
        "user"
    ]
}

StatsResource

Methoden

  • GET

URI

http://DAPNET_CORE_SERVER.org/stats

Berechtigungen

  • EVERYBODY

Beschreibung

  • Liefert die Statistiken der DAPNET Cores

Repräsentation

{
    "users": 618,
    "calls": 284,
    "callsTotal": 505331,
    "callSigns": 544,
    "news": 101,
    "newsTotal": 0,
    "rubrics": 69,
    "nodesTotal": 12,
    "nodesOnline": 10,
    "transmittersTotal": 183,
    "transmittersOnline": 93
}

TransmitterControlResource

Methoden

  • GET

URI

http://DAPNET_CORE_SERVER.org/tranmitterControl/sendRubricNames/[NAME]

Berechtigungen

  • ADMIN_ONLY

Beschreibung

  • sendet Rubriknamen über gegebenen Transmitter [NAME]
  • Gibt 200 OK zurück falls ausgesandt, jedoch mit leerem body

TransmitterGroupResource

Methoden

  • GET
  • PUT
  • DELETE

URI

http://DAPNET_CORE_SERVER.org/tranmitterGroups/[NAME]

Berechtigungen

  • USER_ONLY zum Lesen und Erstellen
  • OWNER_ONLY zum Aktualisieren und Löschen

Beschreibung

  • Erwartet JSON-Repräsentation einer TransmitterGroup
  • GET Abfrage ohne [NAME] liefert alle TransmitterGroups

Repräsentation

{
    "name": "name",
    "description": "description",
    "transmitterNames": [
        "transmitterName"
    ],
    "ownerNames": [
        "user"
    ]
}

TransmitterResource

Methoden

  • GET
  • PUT
  • DELETE

URI

http://DAPNET_CORE_SERVER.org/transmitters/[NAME]

Berechtigungen

  • USER_ONLY zum Lesen und Erstellen
  • OWNER_ONLY zum Aktualisieren und Löschen
  • address wird für USER nicht angezeigt

Beschreibung

  • Erwartet JSON-Repräsentation eines Transmitters
  • status wird intern gesetzt, wird also beim PUT nicht angegeben
  • GET Abfrage ohne [NAME] liefert alle Transmitter
  • ip_addr akzeptiert neben IP Adressen auch Domains (IP Adresse wird automatisch ermittelt)

Repräsentation

{
        "name": "name",
        "authKey": "**********",
        "longitude": "-45.12345678",
        "latitude": "56.12345678",
        "power": "100.123",
        "nodeName": "nodeName",
        "address": {
            "ip_addr": "192.168.000.002",
            "port": 1337
        },
        "timeSlot": "0123456789 ABCDEF",
        "ownerNames": [
            "user"
        ],
        "deviceType": "UniPager-RaspagerV1",
        "deviceVersion": "0.5.1",
        "callCount": 666,
        "status": "OFFLINE",
        "antennaAboveGroundLevel": 42,
        "antennaType": "OMNI",
        "antennaDirection": 0,
        "antennaGainDbi": 0,
        "lastUpdate": "2016-07-18T18:07:30.656Z",
        "usage": "WIDERANGE",
        "identificationAddress": 1,
        "lastConnected": "2018-02-26T18:07:34.187Z",
        "connectedSince": "2018-02-26T18:07:34.187Z"
    }

UserResource

Methoden

  • GET
  • PUT
  • DELETE

URI

http://DAPNET_CORE_SERVER.org/users/[NAME]

Berechtigungen

  • USER_ONLY zum Lesen und Erstellen
  • OWNER_ONLY zum Aktualisieren und Löschen
  • ADMIN_ONLY zum Erstellen von Usern mit Administrationsrechten
  • hash wird für USER nicht angezeigt

Beschreibung

  • Erwartet JSON-Repräsentation eines Users
  • hash wird intern berechnet, beim Erstellen wird die Angabe des gewünschten Passworts unter hash erwartet
    • Wird hash bei einem existierenden User leer gelassen, so wird das Passwort nicht geändert
  • GET Abfragen ohne [NAME] liefert alle User

Repräsentation

GET

{
    "name": "user",
    "mail": "user@user.de",
    "admin": true
}

PUT

{
    "name": "user",
    "hash": "*************",
    "mail": "user@user.de",
    "admin": true
}