KI BMS
Befehlszeile (CLI)
Ein nativer Befehlszeilen-Client für KI BMS. Eine Installationszeile.
Die KI BMS-CLI wird automatisch aus denselben Modellen erzeugt wie die HTTP-API - jeder mit curl erreichbare Endpunkt ist hier auch ein Unterbefehl. Das Skript ist eine einzelne, in sich geschlossene Python-Datei (kein pip install), prüft täglich auf Updates und authentifiziert sich mit denselben Bearer-Tokens wie der Rest der API.
Installation
Eine Zeile, eine Datei. Das Skript wird in deinem Home-Verzeichnis abgelegt - kein pip install, kein systemweiter Eingriff. Wähle das passende Betriebssystem über die Tabs.
curl -fsSL https://ki-bewerber-management.de/xapi2/cli/install.sh | bash
1.2.8·Befehl: atscli·Prüfsumme: 454ae7b3d5…Anmelden
Jeder Befehl außer login / version / update braucht ein gültiges Token. Zwei Wege: ein persönliches Zugriffstoken (PAT) aus dem Integrationen-Menü (empfohlen für Skripte und CI) oder interaktiv per E-Mail und Passwort (gespeichert als Sitzungstoken unter ~/.atscli/credentials.json, Modus 0600).
atscli login --token pat_…
Befehle
Jedes Datenmodell ist eine Untergruppe. Klicke auf einen Modellnamen, um die zugehörige Detailseite zu öffnen. Die verfügbaren Operationen entsprechen denen der HTTP-API.
| Modell | Befehle |
|---|---|
| application | atscli application listatscli application getatscli application createatscli application updateatscli application deleteatscli application upsert |
| application_note | atscli application_note listatscli application_note getatscli application_note createatscli application_note updateatscli application_note deleteatscli application_note upsert |
| audit_event | atscli audit_event listatscli audit_event get |
| candidate | atscli candidate listatscli candidate getatscli candidate createatscli candidate updateatscli candidate deleteatscli candidate upsert |
| company_profile | atscli company_profile listatscli company_profile getatscli company_profile createatscli company_profile updateatscli company_profile deleteatscli company_profile upsert |
| email_import_log | atscli email_import_log listatscli email_import_log getatscli email_import_log create |
| email_inbox | atscli email_inbox listatscli email_inbox getatscli email_inbox createatscli email_inbox updateatscli email_inbox deleteatscli email_inbox upsert |
| email_template | atscli email_template listatscli email_template getatscli email_template createatscli email_template updateatscli email_template deleteatscli email_template upsert |
| evaluation | atscli evaluation listatscli evaluation getatscli evaluation createatscli evaluation updateatscli evaluation deleteatscli evaluation upsert |
| interview | atscli interview listatscli interview getatscli interview createatscli interview updateatscli interview deleteatscli interview upsert |
| job | atscli job listatscli job getatscli job createatscli job updateatscli job deleteatscli job upsert |
| message | atscli message listatscli message getatscli message createatscli message updateatscli message deleteatscli message upsert |
| offer | atscli offer listatscli offer getatscli offer createatscli offer updateatscli offer deleteatscli offer upsert |
| source | atscli source listatscli source getatscli source createatscli source updateatscli source deleteatscli source upsert |
| task | atscli task listatscli task getatscli task createatscli task updateatscli task deleteatscli task upsert |
--filter name=Foo (wiederholbar), --all (auto-paginieren), --fields id,name (Antwort projizieren), --cache N (lokaler Cache, N s), --file p.json / --csv p.csv / --stdin (Bulk-Eingabe; Arrays + CSV-Zeilen), --continue-on-error (Bulk-Fehler nicht stoppen, Exit 1 bei Fehler), --dry-run (Anfrage vorher zeigen), --idempotency-key K / --auto-idempotency (sicheres Wiederholen), --retry N + --backoff exp (429/5xx wiederholen), --format json|ndjson|table (Ausgabeformat), --stderr-json (maschinenlesbare Fehler), --profile NAME (Konto wechseln).Mit einer KI nutzen
Modelle wie Claude, ChatGPT oder Gemini schreiben dir Skripte, die diese CLI direkt verwenden - sie brauchen nur den Kontext unten. Kopiere den Block in deinen Chat und beschreibe, was du erreichen willst.
Help me write scripts using `atscli`, the CLI for the KI BMS app.Install:macOS/Linux: curl -fsSL https://ki-bewerber-management.de/xapi2/cli/install.sh | bashWindows PS: irm https://ki-bewerber-management.de/xapi2/cli/install.ps1 | iexSign in (required before any data command):atscli login --token pat_… # personal access tokenatscli login # interactive (token or email + password)Commands per model:atscli application { list | get | create | update | delete | upsert }fields: --job-id --candidate-id --stage --previous-stage --position --applied-at --last-stage-at --source-id --source-label --cover-letter --cover-letter-url --cover-letter-blob-id --cv-blob-id --cv-url --video-url --answers --fit-score --fit-reasoning --fit-flags --fit-computed-at --fit-breakdown --fit-strengths --fit-gaps --fit-interview-questions --rejected-reason --rejected-note --tagsatscli application_note { list | get | create | update | delete | upsert }fields: --body --pinned --private --parent-kind --parent-idatscli audit_event { list | get }fields: --category --action --actor-id --actor-label --entity-type --entity-id --entity-label --occurred-at --details --ip --user-agentatscli candidate { list | get | create | update | delete | upsert }fields: --name --first-name --last-name --salutation --pronouns --email --phone --street --postal-code --city --country --current-company --current-role --years-experience --available-from --salary-expectation --currency --linkedin --github --portfolio --cv-url --cv-blob-id --avatar-blob-id --summary --skills --languages --tags --source-id --source-label --pool-status --gdpr-consent --gdpr-consent-at --gdpr-retention-until --preferred-locale --last-touched-at --coloratscli company_profile { list | get | create | update | delete | upsert }fields: --name --display-name --logo-url --banner-url --accent-color --summary --website --size --industry --main-location --privacy-url --imprint-url --retention-value --retention-unit --public-careers-enabled --show-other-jobs --show-aboutatscli email_import_log { list | get | create }fields: --email-inbox-id --status --sender --sender-name --sender-email --subject --received-at --message-id --source-folder --source-uid --preview --attachments --signals --matched-job-id --matched-job-title --matched-application-id --matched-candidate-id --score --match-score --reason --error-messageatscli email_inbox { list | get | create | update | delete | upsert }fields: --mail-account-id --provider --connected-at --active --email-address --host --port --username --scan-enabled --scan-folder --filter-min-score --filter-sender-allowlist --filter-sender-blocklist --auto-match-jobs --auto-create-candidates --last-scan-at --last-scan-uid --last-scan-error --total-scanned --total-imported --total-duplicates --total-ignored --total-errorsatscli email_template { list | get | create | update | delete | upsert }fields: --name --category --subject --body --language --stage-trigger --auto-send --active --variables-docatscli evaluation { list | get | create | update | delete | upsert }fields: --application-id --interview-id --interviewer-id --interview-notes --skills-score --culture-score --communication-score --potential-score --problem-solving --analytical-thinking --learning-agility --attention-to-detail --adaptability --teamwork --overall-score --recommendation --highlights --concerns --summaryatscli interview { list | get | create | update | delete | upsert }fields: --application-id --candidate-id --job-id --kind --status --title --scheduled-at --duration-minutes --location --meeting-url --interviewer-id --interviewer-ids --agenda --notes --send-inviteatscli job { list | get | create | update | delete | upsert }fields: --title --slug --department --location --country --remote --work-arrangement --work-locations --employment-type --seniority --career-level --headcount --salary-min --salary-max --salary-period --currency --salary-visibility --summary --intro --description --responsibilities --requirements --nice-to-have --benefits --closing-words --language --application-language --job-category --job-subcategory --skills --status --public --ai-screen-enabled --ai-screen-prompt --ai-criteria --ai-thresholds --knockout-questions --screening-questions --application-documents --auto-send-confirmation --pipeline-id --tags --hiring-manager-id --hiring-team --team-ids --opened-at --target-close-date --closed-at --external-apply-url --coloratscli message { list | get | create | update | delete | upsert }fields: --candidate-id --application-id --channel --direction --subject --body --status --sent-at --delivered-at --read-at --template-id --from-address --to-address --cc-addresses --thread-id --erroratscli offer { list | get | create | update | delete | upsert }fields: --application-id --candidate-id --job-id --salary-gross --salary-period --currency --bonus --bonus-note --vacation-days --start-date --expires-at --term --term-until --weekly-hours --remote-policy --status --sent-at --decided-at --letter-body --letter-blob-id --decline-reasonatscli source { list | get | create | update | delete | upsert }fields: --name --kind --url --active --notesatscli task { list | get | create | update | delete | upsert }fields: --title --description --due-date --completed --completed-at --priority --assigned-to --parent-kind --parent-idOutput + flags:- stdout is JSON (one object, or {data:[...], meta:{...}} on list).- errors go to stderr; non-zero exit (3=auth, 5=not found, 6=validation, 7=conflict, 8=rate-limited).- --filter name=Foo (friendly key, repeatable) on `list`.- --all auto-paginates; --fields id,name projects; --cache N caches list/get for N s.- writes accept --json '{...}', --file path.json (arrays = bulk), --stdin, or --csv path [--map k=COL,…].- upsert needs --unique <field>; --dry-run previews any write.- --retry N --backoff exp survives 429/5xx; --stderr-json gives machine-readable errors.Field schemas + constraints per model: https://ki-bewerber-management.de/docs/types/<model>Full CLI reference: https://ki-bewerber-management.de/docs/cliTask: <describe what you want to do>
Beispiele
atscli login --token pat_…atscli whoami
Rezepte
End-to-end Snippets für die Workflows, die Leute am häufigsten brauchen. Auswählbar über die Tabs.
# items.csv has columns: job_id,Full Name,status# --map renames CSV headers to API field names; missing cells skipped.atscli application create \--csv items.csv \--map name=Full Name \--continue-on-error \--retry 3 --backoff exp
Umgebungsvariablen
| Variable | Zweck |
|---|---|
| XCLI_NO_AUTOUPDATE | Tägliche Versionsprüfung und Selbst-Update überspringen. |
| XCLI_NO_TELEMETRY | Anonyme CLI-Nutzungs-Analyse überspringen. |
| XCLI_BASE_URL | Eingebettete Server-URL überschreiben (nur für Tests). |
| XCLI_TOKEN | PAT nur für diesen Aufruf nutzen, ohne ihn zu speichern. |
Telemetrie + Auto-Update
Die CLI sendet pro Befehl ein anonymes Analyse-Event (Befehlsname, Version, OS - keine Request-Bodies, keine Feldwerte), damit das Team, das diese App betreibt, die Nutzung im gleichen Dashboard wie die Web-UI sieht. Die Daten werden sicher verarbeitet; ein Audit-Log aller dich betreffenden Events kann jederzeit beim Anbieter dieser App angefragt werden. Wir empfehlen ausdrücklich, die Telemetrie aktiviert zu lassen - so werden Stabilitäts-probleme sichtbar und das Team kann Verbesserungen priorisieren, die dich betreffen. Abschalten mit XCLI_NO_TELEMETRY=1. Zusätzlich prüft die CLI höchstens alle 24 Stunden auf eine neuere Version und ersetzt sich selbst; XCLI_NO_AUTOUPDATE=1 deaktiviert das.