Fourigin-GbR / theseus

0 stars 0 forks source link

CMS | Create Site Structure Editor JSONs #37

Closed kschaefer76 closed 4 years ago

kschaefer76 commented 5 years ago

Vorschlag Site Structure:

{
    "timeStamp?": "2019...",
    "hash?": "xyz321",
    "structure": [
    {
        "type": "file",
        "name": "home"
    },
    {
        "type": "file",
        "name": "search"
    },
    {
        "type": "dir",
        "name": "regions",
        "children": [
            {
                "type": "file",
                "name": "athen"
            },
            {
                "type": "dir",
                "name": "objects",
                "children": [
                    {
                        "type": "file",
                        "name": "common"
                    }
                ]
            }
        ]
    }
]
}

Vorschlag Item (Beispiel File):

{
    "timeStamp": "2019...",
    "hash": "xyz321",
    "absolutePath": "/abc/def/ghi",
    "item": {
        "type": "file",
        "name": "home",
        "localizedName": {
            "gk": "home",
            "de": "home",
            "ru": "home"
        },
        "displayName": {
            "gk": "Home",
            "de": "Home",
            "ru": "Главная"
        },
        "templateReference": {
            "templateId": "index",
            "variationId": "default",
            "revision": ""
        }
    }
}

Beim Speichern soll entsprechend eine Validierungsnachricht zurück kommen.

Ich weiß, es muss noch detaillierter werden, aber macht das auf den ersten Blick Sinn für dich @ervion ? Ich schaue mal, wo wir einfach und effektiv unsere Daten-Formate dokumentieren können. Denn ich weiß grade nicht mehr, wie wir die Meta-Angaben beim Content Editor definiert hatten, deswegen meine Fragezeichen. Sollte aber gleichem Muster entsprechen.

ervion commented 5 years ago

Allgemeine IDEE: GET == retrieve, POST == update, PUT == create, DELETE == remove (ja, ich weiß, an sich nichts Neues...)

GET: /siteStructure?l=DE liefert:

{
  "originalChecksum": "...",
  "structure": [
    {
      "type": "PAGE",
      "name": "home"
    },
    {
      "type": "DIRECTORY",
      "name": "regions",
      "children": [
        ...
      ]
    }
  ]
}

POST: /siteStructure?l=DE mit der geänderten SiteStructure als JSON-Body liefert:

{
  "status": "true",
  "siteStructure": {
    // die aktuelle SiteStructure
  }
}

Wenn sich die Structure in der Zwischenzeit verändert hatte, wird "status": "false" mit der geänderten SiteStructure zurückgegeben.

GET: /siteNode?l=DE&p=/path-to-node liefert:

{
  "path": "path-to-node",
  "originalChecksum": "...",
  "content": {
    "type": "PAGE",
    "name": "...",
    "localizedName": {
            "gk": "home",
            "de": "home",
            "ru": "home"
     },
     "displayName": {
            "gk": "Home",
            "de": "Home",
            "ru": "Главная"
     },
     "templateReference": {
            "templateId": "index",
            "variationId": "default",
            "revision": ""
     }
  }
}

POST: /siteNode?l=DE&p=/path-to-node mit den geänderten Eigenschaften der Node als JSON-Body liefert:

{
  "status": "true",
  "siteNode": {
    // site node content
  }
}

Wenn sich die Node in der Zwischenzeit verändert hatte, wird "status": "false" mit den geänderten SiteNode-Eigenschaften zurückgegeben.