1"use strict";(globalThis.webpackChunkschulconnex=globalThis.webpackChunkschulconnex||[]).push([[1579,2116],{28453(e,n,t){t.d(n,{R:()=>l,x:()=>d});var r=t(96540);const i={},s=r.createContext(i);function l(e){const n=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),r.createElement(s.Provider,{value:n},e.children)}},55126(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"allgemeines-qs","title":"Schulconnex-Quellsysteme-API","description":"Ein Schulconnex-Service kann gegebenenfalls die Nutzung von HTTP-Methoden f\xfcr einzelne Quellsysteme","source":"@site/docs/allgemeines-qs.md","sourceDirName":".","slug":"/allgemeines-qs","permalink":"/docs/allgemeines-qs","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"spezQuellsystemeSidebar","next":{"title":"Datenmodell","permalink":"/docs/datenmodell-qs/datenmodell"}}');var i=t(74848),s=t(28453),l=t(58044);const d={},a="Schulconnex-Quellsysteme-API",c={},o=[...l.toc];function u(e){const n={h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"schulconnex-quellsysteme-api",children:"Schulconnex-Quellsysteme-API"})}),"\n",(0,i.jsx)(n.p,{children:"Ein Schulconnex-Service kann gegebenenfalls die Nutzung von HTTP-Methoden f\xfcr einzelne Quellsysteme\neinschr\xe4nken, beispielsweise nur auf HTTP-GET (und HTTP-HEAD). Wird eine andere Methode benutzt, so erfolgt\neine Fehlermeldung (405/01)."}),"\n",(0,i.jsx)(n.p,{children:"Beim Lesen von Datens\xe4tzen von einem Schulconnex-Server k\xf6nnen auch Attribute mitgeliefert werden, welche\ndurch Quellsysteme nicht ver\xe4ndert werden d\xfcrfen, beispielsweise die Mandanten-ID. Bei UPDATE-Operationen\nk\xf6nnen diese Attribute oft weggelassen werden (genaueres ist bei den entsprechenden Funktionen angegeben).\nWerden die Attribute bei der UPDATE-Operation angegeben, so m\xfcssen sie allerdings dem vorher ausgelesenen\nWert entsprechen. Bei einer Abweichung wird eine Fehlermeldung ausgegeben."}),"\n","\n",(0,i.jsx)(l.default,{})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},58044(e,n,t){t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"allgemeines-leere-inhalte","title":"allgemeines-leere-inhalte","description":"Leere Inhalte in JSON-Antworten","source":"@site/docs/allgemeines-leere-inhalte.md","sourceDirName":".","slug":"/allgemeines-leere-inhalte","permalink":"/docs/allgemeines-leere-inhalte","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{}}');var i=t(74848),s=t(28453);const l={},d=void 0,a={},c=[{value:"Leere Inhalte in JSON-Antworten",id:"leere-inhalte-in-json-antworten",level:2}];function o(e){const n={code:"code",h2:"h2",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"leere-inhalte-in-json-antworten",children:"Leere Inhalte in JSON-Antworten"}),"\n",(0,i.jsx)(n.p,{children:"Schulconnex-Server d\xfcrfen keine JSON-Objekte ohne Inhalte ausliefern."}),"\n",(0,i.jsx)(n.p,{children:"Dies gilt sowohl f\xfcr einzelne Attribute, f\xfcr die kein Wert in der Antwort ausgeliefert wird, als auch f\xfcr Arrays, die keine Elemente enthalten, und auch f\xfcr komplexe JSON-Objekte, welche nur Attribute oder Unter-Objekte ohne Inhalte enthalten."}),"\n",(0,i.jsxs)(n.p,{children:["Ein einzelnes Attribut hat dann keinen Wert, wenn dieser nie gesetzt wurde und in der Spezifikation kein Default-Wert definiert ist, oder wenn ein vorhandener Wert gel\xf6scht oder bei einem PATCH auf ",(0,i.jsx)(n.code,{children:"null"})," gesetzt wurde. Unabh\xe4ngig davon, ob ein Client im Prinzip auf dieses Attribut zugreifen kann, d\xfcrfen solche Attribute von Schulconnex-Servern nicht ausgeliefert werden."]}),"\n",(0,i.jsx)(n.p,{children:"Dies gilt auch f\xfcr komplexe JSON-Objekte, wenn alle enthaltenen, f\xfcr einen Client lesbaren, Attribute leer sind."}),"\n",(0,i.jsx)(n.p,{children:"Ist, beispielsweise, zur Geburt einer Person nur der Ort und nicht das Datum gesetzt, so liefert der Server in der Antwort auch nur:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'"geburt": {\n "geburtsort": "Berlin, Deutschland"\n }\n'})}),"\n",(0,i.jsxs)(n.p,{children:["Ist auch der Geburtsort nicht gesetzt, so wird das Objekt ",(0,i.jsx)(n.code,{children:"geburt"})," in der Antwort nicht geliefert."]}),"\n",(0,i.jsxs)(n.p,{children:["Hat ein Dienst nur Zugriff auf das Attribut ",(0,i.jsx)(n.code,{children:"geburt.datum"}),", so darf das Objekt ",(0,i.jsx)(n.code,{children:"geburt"})," in beiden F\xe4llen nicht geliefert werden."]}),"\n",(0,i.jsx)(n.p,{children:"Hierdurch sollen Inkonsistenzen im Verhalten unterschiedlicher Schulconnex-Server vermieden werden und verhindert werden, dass Dienste implizit R\xfcckschl\xfcsse auf f\xfcr diese nicht vertraglich freigegebene Attribute ziehen k\xf6nnen."}),"\n",(0,i.jsxs)(n.p,{children:["Eine Ausnahme von diesem Verhalten besteht bei der Nutzung von Filtern beim Lese-Zugriff auf Daten. Wird, beispielsweise durch die Nutzung von Filtern, auf eine Anfrage kein R\xfcckgabewert geliefert, so muss ein Schulconnex-Server eine leere Liste ",(0,i.jsx)(n.code,{children:"[]"})," liefern."]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.