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).
Authorization: Bearer <token>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.| Methode | Pfad | Zweck | Auth |
|---|---|---|---|
POST | /api/support/query | Suche über RAG + Jira + Confluence, optional KI-Zusammenfassung | Token oder API-Key |
POST | /api/support/summarize | KI-Zusammenfassung eines einzelnen Jira-Tickets – ODER Freitext mit Ticket-Key (z. B. CRM-10550) wird wie /query beantwortet | Token oder API-Key |
GET | /api/support/status | Aktive Quellen + Maxima (Zeilen, Ticketanzahl) | Token |
GET/POST | /api/support/instructions | Persönliche Anweisungen lesen/speichern (Markdown) | Token |
GET/DELETE | /api/support/history | Suchverlauf des Benutzers lesen/löschen | Token |
GET | /api/jira/phonenumber | CRM-Kundennummer (CRM-xxxxxx) zu einer Telefonnummer ermitteln | Token oder API-Key |
GET | /api/jira/crm-number | Alle Tickets zu einer dedizierten CRM-Kundennummer finden | Token oder API-Key |
GET | /api/jira/passende-tickets | Passende Tickets eines CRM-Kunden zu 2-5 Schlagworten (offen + abgeschlossen) | Token oder API-Key |
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: …" }
]
}
/api/support/queryAlle Felder außer text sind optional. Die Maxima
(*_max) stammen aus der Skill-Konfiguration und lassen sich über GET /api/support/status abfragen.
| Feld | Typ | Default | Beschreibung |
|---|---|---|---|
text (Alias query) | string | Pflicht | Die 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. |
rag | bool | true | Wissensdatenbank einbeziehen (RAG – TF-IDF/Vektor-Suche). |
confluence | bool | true | Confluence-Seiten durchsuchen (nur wirksam, wenn der Confluence-Skill aktiv ist). |
ibs | bool | false | Kundenverwaltung (IBS) durchsuchen – Ticket-/Ereignissuche über die API-Funktion „getMatchingEvents" (nur wirksam, wenn URL und API-Key der Kundenverwaltung hinterlegt sind). |
ai | bool | true | KI-Gesamtzusammenfassung (ai_summary) über alle Treffer erzeugen. |
jira_all | bool | false | „Alle Jira-Tickets" (offen + geschlossen) durchsuchen. |
jira_open | bool | false | „Nur offene Jira-Tickets" durchsuchen. Sind jira_all und jira_open beide true, gewinnt jira_all. |
jira_limit | int | ticket_count_default (12) | Max. Anzahl geladener Jira-Tickets, begrenzt auf 1 … ticket_count_max (Admin-Maximum, Standard 50). |
summary_lines | int | summary_lines_max (5) | Max. Satzanzahl der KI-Gesamtzusammenfassung, begrenzt auf 2 … summary_lines_max. Nur wirksam bei ai:true. |
prompt (Alias instruction) | string | – | Ad-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. |
lang | string | "de" | Sprache der KI-Zusammenfassung: de oder en. |
/api/support/query| Feld | Typ | Beschreibung |
|---|---|---|
ok | bool | Erfolgskennzeichen. Bei Fehlern false plus error. |
query | string | Die ausgewertete Anfrage. |
blocks | array | Alle Treffer, nach score absteigend (Felder siehe unten). |
ai_summary | string | KI-Gesamtzusammenfassung (leer bei ai:false oder ohne Treffer). |
jira_total | int | null | Gesamtzahl gefundener Jira-Treffer vor der jira_limit-Deckelung (null, wenn Jira nicht abgefragt wurde). |
open_only | bool | Ob nur offene Tickets berücksichtigt wurden. |
jira_active, confluence_active | bool | Ob die jeweilige Quelle serverseitig aktiv ist. |
jira_base | string | Basis-URL der Jira-Instanz (zum Bauen von Ticket-Links). |
summary_lines_max | int | Maximale Satzanzahl der KI-Zusammenfassung. Der Treffer-Text wird vollständig geliefert (keine Zeilen-Begrenzung). |
took_ms | int | Server-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).
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 …"
}
/api/support/summarizeModus A – Einzel-Ticket (key gesetzt, kein Ticket-Key im Freitext):
| Feld | Typ | Default | Beschreibung |
|---|---|---|---|
key | string | Pflicht | Jira-Ticket-Key, z. B. SUP-1234. Beschreibung + letzte Kommentare werden nachgeladen und zusammengefasst. |
source | string | "JIRA" | Aktuell wird nur JIRA unterstützt (anderer Wert → 400). |
lines | int | summary_lines_max (5) | Satzanzahl der Zusammenfassung, begrenzt auf 2 … summary_lines_max (Admin-Maximum). |
lang | string | "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, …).
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.
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.
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"
}
| Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
phone (Aliase phonenumber, number) | string | Pflicht | Die Telefonnummer (beliebige Schreibweise, z. B. +49 151 123456, 0151/123456). In der URL muss + als %2B kodiert werden. |
limit | int | 25 | Max. 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.
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" }
]
}
| Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
crm (Aliase crm_number, number) | string | Pflicht | Die CRM-Kundennummer im Muster CRM-xxxxxx (z. B. CRM-10550). Ein anderes Format → 400. |
limit | int | 25 | Max. 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.
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" }
]
}
| Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
crm (Aliase crm_number, number, kunde) | string | Pflicht | CRM-Kundennummer im Muster CRM-xxxxxx. Anderes Format → 400. |
keywords (Alias q) | string | Pflicht | 2 bis 5 Schlagworte, komma- oder leerzeichengetrennt (z. B. drucker,fehler,vpn). Weniger als 2 oder mehr als 5 → 400. |
match | string | all | all = Ticket muss ALLE Schlagworte enthalten (UND); any = irgendeines (ODER). |
limit | int | 25 | Max. 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.
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).
Authorization: Bearer <token>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.| Method | Path | Purpose | Auth |
|---|---|---|---|
POST | /api/support/query | Search across RAG + Jira + Confluence, optional AI summary | Token or API key |
POST | /api/support/summarize | AI summary of a single Jira ticket – OR free text containing a ticket key (e.g. CRM-10550) is answered like /query | Token or API key |
GET | /api/support/status | Active sources + maxima (lines, ticket count) | Token |
GET/POST | /api/support/instructions | Read/save personal instructions (Markdown) | Token |
GET/DELETE | /api/support/history | Read/delete the user's search history | Token |
GET | /api/jira/phonenumber | Determine the CRM customer number (CRM-xxxxxx) for a phone number | Token or API key |
GET | /api/jira/crm-number | Find all tickets for a dedicated CRM customer number | Token or API key |
GET | /api/jira/passende-tickets | Matching tickets of a CRM customer for 2-5 keywords (open + closed) | Token or API key |
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: …" }
]
}
/api/support/queryAll fields except text are optional. The maxima
(*_max) come from the skill configuration and can be queried via GET /api/support/status.
| Field | Type | Default | Description |
|---|---|---|---|
text (alias query) | string | required | The 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. |
rag | bool | true | Include the knowledge base (RAG – TF-IDF/vector search). |
confluence | bool | true | Search Confluence pages (only effective if the Confluence skill is active). |
ibs | bool | false | Search customer management (IBS) – ticket/event search via the "getMatchingEvents" API function (only effective if the customer management URL and API key are configured). |
ai | bool | true | Generate an overall AI summary (ai_summary) across all hits. |
jira_all | bool | false | Search "all Jira tickets" (open + closed). |
jira_open | bool | false | Search "open Jira tickets only". If jira_all and jira_open are both true, jira_all wins. |
jira_limit | int | ticket_count_default (12) | Max. number of Jira tickets loaded, limited to 1 … ticket_count_max (admin maximum, default 50). |
summary_lines | int | summary_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) | string | – | Ad-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. |
lang | string | "de" | Language of the AI summary: de or en. |
/api/support/query| Field | Type | Description |
|---|---|---|
ok | bool | Success flag. On errors false plus error. |
query | string | The evaluated query. |
blocks | array | All hits, sorted by score descending (fields see below). |
ai_summary | string | Overall AI summary (empty with ai:false or without hits). |
jira_total | int | null | Total number of Jira hits before the jira_limit cap (null if Jira was not queried). |
open_only | bool | Whether only open tickets were considered. |
jira_active, confluence_active | bool | Whether the respective source is active server-side. |
jira_base | string | Base URL of the Jira instance (for building ticket links). |
summary_lines_max | int | Maximum sentence count of the AI summary. The hit text is returned in full (no line limit). |
took_ms | int | Server 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).
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 …"
}
/api/support/summarizeMode A – single ticket (key set, no ticket key in the free text):
| Field | Type | Default | Description |
|---|---|---|---|
key | string | required | Jira ticket key, e.g. SUP-1234. Description + latest comments are fetched and summarized. |
source | string | "JIRA" | Currently only JIRA is supported (any other value → 400). |
lines | int | summary_lines_max (5) | Number of sentences of the summary, limited to 2 … summary_lines_max (admin maximum). |
lang | string | "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, …).
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.
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.
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"
}
| Parameter | Type | Default | Description |
|---|---|---|---|
phone (aliases phonenumber, number) | string | required | The phone number (any notation, e.g. +49 151 123456, 0151/123456). In the URL, + must be encoded as %2B. |
limit | int | 25 | Max. 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).
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" }
]
}
| Parameter | Type | Default | Description |
|---|---|---|---|
crm (aliases crm_number, number) | string | required | The CRM customer number in the pattern CRM-xxxxxx (e.g. CRM-10550). Any other format → 400. |
limit | int | 25 | Max. 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).
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" }
]
}
| Parameter | Type | Default | Description |
|---|---|---|---|
crm (aliases crm_number, number, kunde) | string | required | CRM customer number in the pattern CRM-xxxxxx. Any other format → 400. |
keywords (alias q) | string | required | 2 to 5 keywords, comma- or space-separated (e.g. printer,error,vpn). Fewer than 2 or more than 5 → 400. |
match | string | all | all = ticket must contain ALL keywords (AND); any = any of them (OR). |
limit | int | 25 | Max. 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.