🔌 Jarvis Support-API – REST-Zugriffe

Programmatischer Zugriff auf Support-Suche, KI-Zusammenfassung und CRM-Lookups.

Der Support-Assistent ist auch ohne Web-Oberfläche per REST erreichbar – z. B. aus Ticketsystemen, Skripten oder anderen Anwendungen. Basis-URL ist dein Jarvis-Host (https://DEIN-JARVIS-HOST). Alle Bodies sind JSON (Content-Type: application/json).

Authentifizierung

  • Angemeldeter Benutzer (Browser/Sitzung): Header Authorization: Bearer <token>
  • Externe Anwendung: Header X-API-Key: <API-Key> – API-Keys werden in den Einstellungen verwaltet. /query, /summarize sowie die CRM-Lookups (/api/jira/phonenumber, /api/jira/crm-number) akzeptieren API-Keys; die übrigen Endpunkte erfordern ein Benutzer-Token.

Endpunkte

MethodePfad ZweckAuth
POST/api/support/querySuche über RAG + Jira + Confluence, optional KI-ZusammenfassungToken oder API-Key
POST/api/support/summarizeKI-Zusammenfassung eines einzelnen Jira-Tickets – ODER Freitext mit Ticket-Key (z. B. CRM-10550) wird wie /query beantwortetToken oder API-Key
GET/api/support/statusAktive Quellen + Maxima (Zeilen, Ticketanzahl)Token
GET/POST/api/support/instructionsPersönliche Anweisungen lesen/speichern (Markdown)Token
GET/DELETE/api/support/historySuchverlauf des Benutzers lesen/löschenToken
GET/api/jira/phonenumberCRM-Kundennummer (CRM-xxxxxx) zu einer Telefonnummer ermittelnToken oder API-Key
GET/api/jira/crm-numberAlle Tickets zu einer dedizierten CRM-Kundennummer findenToken oder API-Key
GET/api/jira/passende-ticketsPassende Tickets eines CRM-Kunden zu 2-5 Schlagworten (offen + abgeschlossen)Token oder API-Key

Beispiel 1 – Suche mit KI-Zusammenfassung

Durchsucht Wissensdatenbank und (nur offene) Jira-Tickets, holt bis zu 10 Tickets und lässt eine KI-Gesamtzusammenfassung erstellen.

curl -sk https://DEIN-JARVIS-HOST/api/support/query \
  -H "X-API-Key: DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "text": "Drucker im 2. OG offline",
        "rag": true,
        "confluence": false,
        "ai": true,
        "jira_all": false,
        "jira_open": true,
        "jira_limit": 10,
        "summary_lines": 5,
        "prompt": "Antworte in Stichpunkten mit konkreten Lösungsschritten.",
        "lang": "de"
      }'

Antwort (gekürzt):

{
  "ok": true,
  "query": "Drucker im 2. OG offline",
  "ai_summary": "Mögliche Ursache ist ein Netzwerk-Timeout des Druckers …",
  "jira_total": 7,
  "blocks": [
    { "source": "JIRA",   "key": "SUP-1234", "title": "SUP-1234",
      "score": 92, "summary": "Drucker reagiert nicht …" },
    { "source": "WISSEN", "title": "Drucker-Reset Anleitung",
      "score": 80, "summary": "Schritt 1: …" }
  ]
}

Request-Felder /api/support/query

Alle Felder außer text sind optional. Die Maxima (*_max) stammen aus der Skill-Konfiguration und lassen sich über GET /api/support/status abfragen.

FeldTyp DefaultBeschreibung
text (Alias query)stringPflichtDie Suchanfrage / der Freitext. Leer → 400. Enthält der Text einen Vorgangs-/CRM-Key (Muster ABC-123, z. B. CRM-10550), wird Jira unabhängig von den Jira-Flags immer durchsucht.
ragbooltrueWissensdatenbank einbeziehen (RAG – TF-IDF/Vektor-Suche).
confluencebooltrueConfluence-Seiten durchsuchen (nur wirksam, wenn der Confluence-Skill aktiv ist).
ibsboolfalseKundenverwaltung (IBS) durchsuchen – Ticket-/Ereignissuche über die API-Funktion „getMatchingEvents" (nur wirksam, wenn URL und API-Key der Kundenverwaltung hinterlegt sind).
aibooltrueKI-Gesamtzusammenfassung (ai_summary) über alle Treffer erzeugen.
jira_allboolfalse„Alle Jira-Tickets" (offen + geschlossen) durchsuchen.
jira_openboolfalse„Nur offene Jira-Tickets" durchsuchen. Sind jira_all und jira_open beide true, gewinnt jira_all.
jira_limitintticket_count_default (12)Max. Anzahl geladener Jira-Tickets, begrenzt auf 1 … ticket_count_max (Admin-Maximum, Standard 50).
summary_linesintsummary_lines_max (5)Max. Satzanzahl der KI-Gesamtzusammenfassung, begrenzt auf 2 … summary_lines_max. Nur wirksam bei ai:true.
prompt (Alias instruction)stringAd-hoc-Anweisung nur für diesen Aufruf; wird zusätzlich zum Admin-Prompt und den persönlichen Anweisungen an die KI-Gesamtzusammenfassung gehängt (z. B. Fokus, Tonfall, Format). Nur wirksam bei ai:true.
langstring"de"Sprache der KI-Zusammenfassung: de oder en.

Antwort-Felder /api/support/query

FeldTypBeschreibung
okboolErfolgskennzeichen. Bei Fehlern false plus error.
querystringDie ausgewertete Anfrage.
blocksarrayAlle Treffer, nach score absteigend (Felder siehe unten).
ai_summarystringKI-Gesamtzusammenfassung (leer bei ai:false oder ohne Treffer).
jira_totalint | nullGesamtzahl gefundener Jira-Treffer vor der jira_limit-Deckelung (null, wenn Jira nicht abgefragt wurde).
open_onlyboolOb nur offene Tickets berücksichtigt wurden.
jira_active, confluence_activeboolOb die jeweilige Quelle serverseitig aktiv ist.
jira_basestringBasis-URL der Jira-Instanz (zum Bauen von Ticket-Links).
summary_lines_maxintMaximale Satzanzahl der KI-Zusammenfassung. Der Treffer-Text wird vollständig geliefert (keine Zeilen-Begrenzung).
took_msintServer-Laufzeit der Anfrage in Millisekunden.

Jedes Element in blocks[] hat: source (WISSEN | JIRA | CONFLUENCE), title, summary (Kurzfassung), score (Relevanz in %), source_label und link (URL bzw. interner Abruf-Link). Quellenspezifisch zusätzlich: key, created (Erstellungsdatum) und updated (letzte Änderung) – jeweils nur JIRA, ISO-8601, doc + doc_name (nur WISSEN – Quelldokument), full_text (nur CONFLUENCE – gekappter Volltext).

Beispiel 2 – Einzelnes Ticket zusammenfassen

Lädt ein konkretes Jira-Ticket (Beschreibung + Kommentare) und fasst es in wenigen Sätzen zusammen.

curl -sk https://DEIN-JARVIS-HOST/api/support/summarize \
  -H "X-API-Key: DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "source": "JIRA", "key": "SUP-1234", "lang": "de" }'

Antwort:

{
  "ok": true,
  "key": "SUP-1234",
  "summary": "Das Ticket beschreibt einen Druckerausfall im 2. OG …"
}

Request-Felder /api/support/summarize

Modus A – Einzel-Ticket (key gesetzt, kein Ticket-Key im Freitext):

FeldTyp DefaultBeschreibung
keystringPflichtJira-Ticket-Key, z. B. SUP-1234. Beschreibung + letzte Kommentare werden nachgeladen und zusammengefasst.
sourcestring"JIRA"Aktuell wird nur JIRA unterstützt (anderer Wert → 400).
linesintsummary_lines_max (5)Satzanzahl der Zusammenfassung, begrenzt auf 2 … summary_lines_max (Admin-Maximum).
langstring"de"Sprache der Zusammenfassung: de oder en.

Antwort: { "ok": true, "key": "…", "summary": "…", "jira_base": "…" }.

Modus B – Freitext mit Ticket-Key: Enthält text/query einen Vorgangs-/CRM-Key (z. B. { "text": "Status zu CRM-10550?" }), wird die Anfrage exakt wie /api/support/query beantwortet – volle Pipeline inkl. KI-Gesamtzusammenfassung, gleiche Antwortstruktur. In diesem Modus gelten alle oben genannten /query-Felder (inkl. prompt, jira_limit, …).

Fehler & Status-Codes

  • 200 / 201 – Erfolg. Fehler liefern stets { "ok": false, "error": "…" }.
  • 400 – ungültige Eingabe (z. B. leerer text, unbekannte source).
  • 401 – nicht authentifiziert (Token/API-Key fehlt oder ungültig).
  • 403 – Support-Skill inaktiv oder Konto gesperrt (Antwort dann mit "account_blocked": true).
  • 499 – Client hat die Verbindung abgebrochen (z. B. „Abbrechen"); die Anfrage wird serverseitig gestoppt.
  • 502 – KI-Zusammenfassung fehlgeschlagen (nur /summarize, Einzel-Ticket).

Hinweis: -k (curl) akzeptiert das selbstsignierte Zertifikat – nur für Tests.

🔎 CRM-Lookups (Jira)

Direkte Nachschlage-Endpunkte für die Anbindung von Telefonanlage/CTI oder Ticketsystem: aus einer Telefonnummer die zugehörige CRM-Kundennummer bestimmen bzw. zu einer CRM-Kundennummer alle Tickets abrufen. Beide sind GET-Aufrufe und akzeptieren Benutzer-Token oder externen API-Key. Setzt einen aktiven, konfigurierten Jira-Skill voraus.

Beispiel 3 – CRM-Kundennummer zu einer Telefonnummer

Sucht die Telefonnummer im Jira-CRM-Objektschema (Insight/Assets, Objektschema CRM, Standard-Schema-ID 21) – konkret in den Telefon-Attributen der CRM-Objekte (Zentrale Rufnummer, Telefonnummer, Mobil Nummer, …). Der Objekt-Key ist die CRM-Kundennummer (CRM-xxxxxx), es werden also ausschließlich CRM-Einträge zurückgegeben.

curl -sk "https://DEIN-JARVIS-HOST/api/jira/phonenumber?phone=%2B4920562611" \
  -H "X-API-Key: DEIN_API_KEY"

Die Nummer +4920562611 wird zu reinen Ziffern-Varianten normalisiert (+ = %2B in der URL): 4920562611 (voll international), 020562611 (national mit 0), 20562611 (ohne Vorwahl). Diese werden – von der längsten (eindeutigsten) zur kürzesten – per IQL like gegen die Telefon-Attribute geprüft; die erste Variante mit Treffern gewinnt. Telefonnummern liegen im CRM-Schema international/zusammenhängend (z. B. +4920562611).

Die Treffer werden nach Objekttyp sortiert: Organisationen zuerst, dann Organisationen-Produktgruppen, dann Personen. Der erste Treffer (Feld crm) ist damit die Organisation selbst. Antwort (Namen hier anonymisiert):

{
  "ok": true,
  "phone": "+4920562611",
  "crm": "CRM-66648",
  "found": true,
  "matches": [
    { "key": "CRM-66648",  "name": "Muster Klinikum GmbH",   "type": "Organisationen" },
    { "key": "CRM-421832", "name": "Muster Produktgruppe",    "type": "Organisationen Produktgruppen" },
    { "key": "CRM-158352", "name": "Muster Ansprechpartner",  "type": "Personen" }
  ],
  "total": 8,
  "variant": "4920562611"
}
ParameterTyp DefaultBeschreibung
phone (Aliase phonenumber, number)stringPflichtDie Telefonnummer (beliebige Schreibweise, z. B. +49 151 123456, 0151/123456). In der URL muss + als %2B kodiert werden.
limitint25Max. Anzahl zurückgegebener CRM-Objekte (1 … 50).

Antwort-Felder: crm (erste gefundene CRM-Kundennummer bzw. null, nach Priorisierung die Organisation), found (bool), matches[] (alle Treffer als key + name + type = Objekttyp), total (Anzahl passender CRM-Objekte), variant (die Nummern-Variante, die getroffen hat), iql (ausgeführte IQL-Abfrage). Hinweis: Teilen sich mehrere Kunden dieselbe Rufnummer (z. B. zentrale Nummer), werden alle zugehörigen CRM-Objekte gelistet. Schema-ID, geprüfte Telefon-Attribute und die Typ-Reihenfolge sind über die Jira-Skill-Konfiguration (insight_schema_id / insight_phone_attrs / insight_type_priority) anpassbar.

Beispiel 4 – Alle Tickets zu einer CRM-Kundennummer

Sucht exakt im Insight-Organisationsfeld und liefert damit alle dem Kunden zugeordneten Tickets (nicht nur Volltext-Treffer), neueste zuerst.

curl -sk "https://DEIN-JARVIS-HOST/api/jira/crm-number?crm=CRM-10550&limit=25" \
  -H "X-API-Key: DEIN_API_KEY"

Antwort (gekürzt):

{
  "ok": true,
  "crm": "CRM-10550",
  "total": 7,
  "jql": "Organisation = \"CRM-10550\" ORDER BY updated DESC",
  "results": [
    { "key": "NXCIS-42", "summary": "Störung Drucker", "status": "Offen",
      "type": "Bug", "priority": "Hoch", "assignee": "…", "link": "https://…/browse/NXCIS-42" }
  ]
}
ParameterTyp DefaultBeschreibung
crm (Aliase crm_number, number)stringPflichtDie CRM-Kundennummer im Muster CRM-xxxxxx (z. B. CRM-10550). Ein anderes Format → 400.
limitint25Max. Anzahl zurückgegebener Tickets (1 … 50).

Antwort-Felder: crm (normalisierte Nummer), total (Jira-Gesamttreffer), results[] (Tickets mit key, summary, status, type, priority, assignee, created, updated, link), jql. Das Organisationsfeld ist über die Jira-Skill-Konfiguration (org_field) anpassbar.

Beispiel 5 – Passende Tickets eines CRM-Kunden zu Schlagworten

Kombiniert die exakte CRM-Kundensuche mit 2 bis 5 Schlagworten (Volltext, OR-verknüpft) und liefert offene und abgeschlossene Tickets des Kunden, neueste zuerst.

curl -sk "https://DEIN-JARVIS-HOST/api/jira/passende-tickets?crm=CRM-10550&keywords=drucker,fehler,vpn&limit=25" \
  -H "X-API-Key: DEIN_API_KEY"

Antwort (gekürzt):

{
  "ok": true,
  "crm": "CRM-10550",
  "keywords": ["drucker", "fehler", "vpn"], "match": "all",
  "total": 5, "returned": 5, "open": 2, "closed": 3,
  "jql": "Organisation = \"CRM-10550\" AND (text ~ \"drucker\" AND text ~ \"fehler\" AND text ~ \"vpn\") ORDER BY updated DESC",
  "results": [
    { "key": "NXCIS-42", "summary": "Störung Drucker", "status": "Erledigt",
      "type": "Bug", "priority": "Hoch", "resolved": true, "link": "https://…/browse/NXCIS-42" }
  ]
}
ParameterTyp DefaultBeschreibung
crm (Aliase crm_number, number, kunde)stringPflichtCRM-Kundennummer im Muster CRM-xxxxxx. Anderes Format → 400.
keywords (Alias q)stringPflicht2 bis 5 Schlagworte, komma- oder leerzeichengetrennt (z. B. drucker,fehler,vpn). Weniger als 2 oder mehr als 5 → 400.
matchstringallall = Ticket muss ALLE Schlagworte enthalten (UND); any = irgendeines (ODER).
limitint25Max. Anzahl zurückgegebener Tickets (1 … 50).

Antwort-Felder: crm, keywords[], total (Jira-Gesamttreffer), returned (Anzahl gelieferter Tickets), open/closed (offen/abgeschlossen, bezogen auf die gelieferte Seite), results[] (Tickets zusätzlich mit resolved = abgeschlossen ja/nein), jql. Es wird KEIN Status-/Resolution-Filter gesetzt → offene wie abgeschlossene Vorgänge kommen zurück.

🔌 Jarvis Support API – REST Access

Programmatic access to support search, AI summarization and CRM lookups.

The support assistant is also accessible via REST without the web UI – e.g. from ticket systems, scripts or other applications. The base URL is your Jarvis host (https://YOUR-JARVIS-HOST). All bodies are JSON (Content-Type: application/json).

Authentication

  • Logged-in user (browser/session): header Authorization: Bearer <token>
  • External application: header X-API-Key: <API key> – API keys are managed in the settings. /query, /summarize and the CRM lookups (/api/jira/phonenumber, /api/jira/crm-number) accept API keys; the remaining endpoints require a user token.

Endpoints

MethodPath PurposeAuth
POST/api/support/querySearch across RAG + Jira + Confluence, optional AI summaryToken or API key
POST/api/support/summarizeAI summary of a single Jira ticket – OR free text containing a ticket key (e.g. CRM-10550) is answered like /queryToken or API key
GET/api/support/statusActive sources + maxima (lines, ticket count)Token
GET/POST/api/support/instructionsRead/save personal instructions (Markdown)Token
GET/DELETE/api/support/historyRead/delete the user's search historyToken
GET/api/jira/phonenumberDetermine the CRM customer number (CRM-xxxxxx) for a phone numberToken or API key
GET/api/jira/crm-numberFind all tickets for a dedicated CRM customer numberToken or API key
GET/api/jira/passende-ticketsMatching tickets of a CRM customer for 2-5 keywords (open + closed)Token or API key

Example 1 – Search with AI summary

Searches the knowledge base and (only open) Jira tickets, fetches up to 10 tickets and has an overall AI summary generated.

curl -sk https://YOUR-JARVIS-HOST/api/support/query \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "text": "Printer on the 2nd floor offline",
        "rag": true,
        "confluence": false,
        "ai": true,
        "jira_all": false,
        "jira_open": true,
        "jira_limit": 10,
        "summary_lines": 5,
        "prompt": "Answer in bullet points with concrete solution steps.",
        "lang": "en"
      }'

Response (shortened):

{
  "ok": true,
  "query": "Printer on the 2nd floor offline",
  "ai_summary": "A likely cause is a network timeout of the printer …",
  "jira_total": 7,
  "blocks": [
    { "source": "JIRA",   "key": "SUP-1234", "title": "SUP-1234",
      "score": 92, "summary": "Printer not responding …" },
    { "source": "WISSEN", "title": "Printer reset guide",
      "score": 80, "summary": "Step 1: …" }
  ]
}

Request fields /api/support/query

All fields except text are optional. The maxima (*_max) come from the skill configuration and can be queried via GET /api/support/status.

FieldType DefaultDescription
text (alias query)stringrequiredThe search query / free text. Empty → 400. If the text contains an issue/CRM key (pattern ABC-123, e.g. CRM-10550), Jira is always searched regardless of the Jira flags.
ragbooltrueInclude the knowledge base (RAG – TF-IDF/vector search).
confluencebooltrueSearch Confluence pages (only effective if the Confluence skill is active).
ibsboolfalseSearch customer management (IBS) – ticket/event search via the "getMatchingEvents" API function (only effective if the customer management URL and API key are configured).
aibooltrueGenerate an overall AI summary (ai_summary) across all hits.
jira_allboolfalseSearch "all Jira tickets" (open + closed).
jira_openboolfalseSearch "open Jira tickets only". If jira_all and jira_open are both true, jira_all wins.
jira_limitintticket_count_default (12)Max. number of Jira tickets loaded, limited to 1 … ticket_count_max (admin maximum, default 50).
summary_linesintsummary_lines_max (5)Max. number of sentences of the overall AI summary, limited to 2 … summary_lines_max. Only effective with ai:true.
prompt (alias instruction)stringAd-hoc instruction for this call only; appended to the overall AI summary in addition to the admin prompt and the personal instructions (e.g. focus, tone, format). Only effective with ai:true.
langstring"de"Language of the AI summary: de or en.

Response fields /api/support/query

FieldTypeDescription
okboolSuccess flag. On errors false plus error.
querystringThe evaluated query.
blocksarrayAll hits, sorted by score descending (fields see below).
ai_summarystringOverall AI summary (empty with ai:false or without hits).
jira_totalint | nullTotal number of Jira hits before the jira_limit cap (null if Jira was not queried).
open_onlyboolWhether only open tickets were considered.
jira_active, confluence_activeboolWhether the respective source is active server-side.
jira_basestringBase URL of the Jira instance (for building ticket links).
summary_lines_maxintMaximum sentence count of the AI summary. The hit text is returned in full (no line limit).
took_msintServer processing time of the request in milliseconds.

Each element in blocks[] has: source (WISSEN | JIRA | CONFLUENCE), title, summary (short version), score (relevance in %), source_label and link (URL or internal fetch link). Source-specific additionally: key, created (creation date) and updated (last modified) – JIRA only, ISO-8601, doc + doc_name (WISSEN only – source document), full_text (CONFLUENCE only – truncated full text).

Example 2 – Summarize a single ticket

Loads a specific Jira ticket (description + comments) and summarizes it in a few sentences.

curl -sk https://YOUR-JARVIS-HOST/api/support/summarize \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "source": "JIRA", "key": "SUP-1234", "lang": "en" }'

Response:

{
  "ok": true,
  "key": "SUP-1234",
  "summary": "The ticket describes a printer outage on the 2nd floor …"
}

Request fields /api/support/summarize

Mode A – single ticket (key set, no ticket key in the free text):

FieldType DefaultDescription
keystringrequiredJira ticket key, e.g. SUP-1234. Description + latest comments are fetched and summarized.
sourcestring"JIRA"Currently only JIRA is supported (any other value → 400).
linesintsummary_lines_max (5)Number of sentences of the summary, limited to 2 … summary_lines_max (admin maximum).
langstring"de"Language of the summary: de or en.

Response: { "ok": true, "key": "…", "summary": "…", "jira_base": "…" }.

Mode B – free text containing a ticket key: if text/query contains an issue/CRM key (e.g. { "text": "Status of CRM-10550?" }), the request is answered exactly like /api/support/query – full pipeline incl. overall AI summary, same response structure. In this mode all /query fields listed above apply (incl. prompt, jira_limit, …).

Errors & status codes

  • 200 / 201 – success. Errors always return { "ok": false, "error": "…" }.
  • 400 – invalid input (e.g. empty text, unknown source).
  • 401 – not authenticated (token/API key missing or invalid).
  • 403 – support skill inactive or account blocked (response then contains "account_blocked": true).
  • 499 – the client aborted the connection (e.g. "Cancel"); the request is stopped server-side.
  • 502 – AI summary failed (only /summarize, single ticket).

Note: -k (curl) accepts the self-signed certificate – for testing only.

🔎 CRM lookups (Jira)

Direct lookup endpoints for integrating a phone system/CTI or ticket system: determine the CRM customer number for a phone number, or fetch all tickets for a CRM customer number. Both are GET calls and accept a user token or an external API key. Requires an active, configured Jira skill.

Example 3 – CRM customer number for a phone number

Searches the phone number in the Jira CRM object schema (Insight/Assets, object schema CRM, default schema ID 21) – specifically in the phone attributes of the CRM objects (Zentrale Rufnummer, Telefonnummer, Mobil Nummer, …). The object key is the CRM customer number (CRM-xxxxxx), so only CRM entries are returned.

curl -sk "https://YOUR-JARVIS-HOST/api/jira/phonenumber?phone=%2B4920562611" \
  -H "X-API-Key: YOUR_API_KEY"

The number +4920562611 is normalized to digit-only variants (+ = %2B in the URL): 4920562611 (fully international), 020562611 (national with 0), 20562611 (without prefix). These are checked – from the longest (most specific) to the shortest – against the phone attributes via IQL like; the first variant with hits wins. Phone numbers are stored internationally/contiguously in the CRM schema (e.g. +4920562611).

The hits are sorted by object type: organizations first (Organisationen), then organization product groups, then persons. The first hit (field crm) is therefore the organization itself. Response (names anonymized here):

{
  "ok": true,
  "phone": "+4920562611",
  "crm": "CRM-66648",
  "found": true,
  "matches": [
    { "key": "CRM-66648",  "name": "Muster Klinikum GmbH",   "type": "Organisationen" },
    { "key": "CRM-421832", "name": "Muster Produktgruppe",    "type": "Organisationen Produktgruppen" },
    { "key": "CRM-158352", "name": "Muster Ansprechpartner",  "type": "Personen" }
  ],
  "total": 8,
  "variant": "4920562611"
}
ParameterType DefaultDescription
phone (aliases phonenumber, number)stringrequiredThe phone number (any notation, e.g. +49 151 123456, 0151/123456). In the URL, + must be encoded as %2B.
limitint25Max. number of returned CRM objects (1 … 50).

Response fields: crm (first CRM customer number found or null; after prioritization the organization), found (bool), matches[] (all hits as key + name + type = object type), total (number of matching CRM objects), variant (the number variant that matched), iql (executed IQL query). Note: if several customers share the same phone number (e.g. a central number), all associated CRM objects are listed. Schema ID, checked phone attributes and the type order can be adjusted via the Jira skill configuration (insight_schema_id / insight_phone_attrs / insight_type_priority).

Example 4 – All tickets for a CRM customer number

Searches exactly in the Insight organization field and thus returns all tickets assigned to the customer (not just full-text hits), newest first.

curl -sk "https://YOUR-JARVIS-HOST/api/jira/crm-number?crm=CRM-10550&limit=25" \
  -H "X-API-Key: YOUR_API_KEY"

Response (shortened):

{
  "ok": true,
  "crm": "CRM-10550",
  "total": 7,
  "jql": "Organisation = \"CRM-10550\" ORDER BY updated DESC",
  "results": [
    { "key": "NXCIS-42", "summary": "Printer failure", "status": "Open",
      "type": "Bug", "priority": "High", "assignee": "…", "link": "https://…/browse/NXCIS-42" }
  ]
}
ParameterType DefaultDescription
crm (aliases crm_number, number)stringrequiredThe CRM customer number in the pattern CRM-xxxxxx (e.g. CRM-10550). Any other format → 400.
limitint25Max. number of returned tickets (1 … 50).

Response fields: crm (normalized number), total (Jira total hits), results[] (tickets with key, summary, status, type, priority, assignee, created, updated, link), jql. The organization field can be adjusted via the Jira skill configuration (org_field).

Example 5 – Matching tickets of a CRM customer for keywords

Combines the exact CRM customer search with 2 to 5 keywords (full text, OR-linked) and returns the customer's open and closed tickets, newest first.

curl -sk "https://YOUR-JARVIS-HOST/api/jira/passende-tickets?crm=CRM-10550&keywords=printer,error,vpn&limit=25" \
  -H "X-API-Key: YOUR_API_KEY"

Response (shortened):

{
  "ok": true,
  "crm": "CRM-10550",
  "keywords": ["printer", "error", "vpn"], "match": "all",
  "total": 5, "returned": 5, "open": 2, "closed": 3,
  "jql": "Organisation = \"CRM-10550\" AND (text ~ \"printer\" AND text ~ \"error\" AND text ~ \"vpn\") ORDER BY updated DESC",
  "results": [
    { "key": "NXCIS-42", "summary": "Printer failure", "status": "Done",
      "type": "Bug", "priority": "High", "resolved": true, "link": "https://…/browse/NXCIS-42" }
  ]
}
ParameterType DefaultDescription
crm (aliases crm_number, number, kunde)stringrequiredCRM customer number in the pattern CRM-xxxxxx. Any other format → 400.
keywords (alias q)stringrequired2 to 5 keywords, comma- or space-separated (e.g. printer,error,vpn). Fewer than 2 or more than 5 → 400.
matchstringallall = ticket must contain ALL keywords (AND); any = any of them (OR).
limitint25Max. number of returned tickets (1 … 50).

Response fields: crm, keywords[], total (Jira total hits), returned (number of returned tickets), open/closed (open/closed, relative to the returned page), results[] (tickets additionally with resolved = closed yes/no), jql. No status/resolution filter is applied → both open and closed issues are returned.