NeXcitium

Sign in to continue

Welcome to NeXcitium

No users exist yet. Create the initial administrator to begin.

Previewing as — changes are view-only
NeXcitium
Accounts Finance Email Protection Account Flags Accounts

Invoice Calculation

Monthly invoice for a single customer email. Aggregates TCV and License Fee per product group.

Document Signing

Send PDF documents for e-signature via DocuSeal and track signing status.

Orders

Browse and search direct orders or reseller orders.
Enter a search term above and click Search.
Formula columns cols AL–BC of the Excel "Raw Data" sheet

Import CSV

Upload a .csv file or an archive containing one (.zip, .gz, .tar.gz, .bz2, .xz). Columns should match the Excel Raw Data sheet (cols A–AK); headers are matched case-insensitively. Derived columns (AL–BC) are regenerated automatically after every import. Refund rows (negative Order value) are stored alongside their sale row, sharing the same Sales order number.
Fetch from Metabase

Import history

WhenFileTotal InsertedUpdated Skipped Failures Notes

Import Scheduler

Automate recurring Metabase fetches. At most one import runs at a time — extras queue behind the active one.
Schedules
NameJob / ReportInterval Next runEnabledActions
Queue
Add Schedule
Backfill Jobs
New Backfill Job
NameReportProgress StatusRecurChunkDelayLast chunkRowsActions
No backfill jobs.
Execution log
ScheduleReportQueued at StatusFetchedImported Fetch timeImport timeError

Lookup Tables

Edits trigger a recompute of the derived columns on all orders.
▸ Product List All products with their group, customer type, and bundle component groups (if any).
Product Group Customer Type Company Bundle Groups
▸ Product Groups Maps product name → product group / customer type / company.
ProductGroupCustomer TypeCompany
▸ Product Bundle Components Maps a bundle product name to the product groups it counts toward in the Product Penetration report.
Bundle ProductComponent Group
▸ Product Owner Companies Maps product group → owning company / customer type.
GroupCompanyCustomer Type
▸ Countries Maps country → continent. Used by region rollups in reports.
CountryRegion
▸ Excluded Account / vTiger IDs Account / vTiger IDs excluded from Same vTiger ID and Same Account ID expansion in License Timeline.
Account / vTiger IDNoteAdded

Users

Add users by their Microsoft email. They can sign in via SSO once added.
▶

awaiting approval

NameMicrosoft EmailJoinedAssign role

Active users

NameMicrosoft Email (SSO)TypeRoleCreatedLast loginManager

API Keys

Issue API keys for external applications to access the CAM REST API (v1).
🔑 New key generated for — copy it now, it won't be shown again
Pass as the X-Api-Key header or ?api_key= query parameter on every API request.
API Reference & Usage Guide
Authentication — include your key on every request via header or query param:
X-Api-Key: cam_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx or ?api_key=cam_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
All responses return {"ok": true, ...} on success or {"ok": false, "error": "..."} on failure.
GET /api/v1/products List all product groups and their products
include_hidden=1 optional — include hidden product groups (default: excluded)
curl -H "X-Api-Key: cam_..." https://<host>/api/v1/products

# Response
{
  "ok": true,
  "product_groups": [
    {
      "id": 90,
      "name": "Endpoint Security",
      "category": "Security",
      "sort_order": 20,
      "products": [
        {"id": 5, "name": "Xcitium Advanced Endpoint Protection", "sort_order": 0}
      ]
    }
  ]
}
GET /api/v1/partners List reseller partners with aggregate stats
q=<text> optional — partial match on org name or email
country=<code> optional — filter by country code (e.g. US, TR)
curl -H "X-Api-Key: cam_..." "https://<host>/api/v1/partners?q=SHI&country=US"

# Response
{
  "ok": true,
  "total": 12,
  "partners": [
    {
      "organization": "SHI",
      "email": "partner@shi.com",
      "country": "US",
      "order_count": 150,
      "total_tcv": 125000.00,
      "total_acv": 98000.00,
      "first_order_date": "2022-03-01",
      "last_order_date":  "2026-01-15"
    }
  ]
}
GET /api/v1/partners/orders Get orders for a specific reseller partner
partner=<email or org> required — matched against reseller email or organization name
from=YYYY-MM-DD optional — earliest sale date (inclusive)
to=YYYY-MM-DD optional — latest sale date (inclusive)
page=1 optional — page number, 1-based (default: 1)
per_page=100 optional — rows per page, max 500 (default: 100)
curl -H "X-Api-Key: cam_..." \
  "https://<host>/api/v1/partners/orders?partner=partner@shi.com&from=2026-01-01&per_page=50"

# Response
{
  "ok": true,
  "partner": {"organization": "SHI", "email": "partner@shi.com"},
  "total": 150,
  "page": 1,
  "per_page": 50,
  "orders": [
    {
      "sales_order_number":    "SO-12345",
      "customer_order_number": "PO-99887",
      "sale_date":             "2026-01-15",
      "end_user_organization": "Acme Corp",
      "end_user_email":        "it@acme.com",
      "end_user_country":      "US",
      "product_name":          "AEP",
      "product_family":        "AEP",
      "term":                  "1 Year",
      "endpoints":             50,
      "tcv":                   1500.00,
      "acv":                   1500.00,
      "order_value":           1500.00,
      "global_order_state":    "Active"
    }
  ]
}
GET /api/v1/partners/end_customer/usage Active device count for a reseller's end customer
partner=<email or org> required — your reseller identifier (same as /api/v1/partners/orders)
end_customer=<email> required — end-user email exactly as it appears in your partner orders
as_of=YYYY-MM-DD optional — snapshot date (default: latest available)
Ownership check: the end customer must appear in at least one order under your partner identifier. Requests for customers outside your portfolio return 404.
curl -H "X-Api-Key: cam_..." \
  "https://<host>/api/v1/partners/end_customer/usage?partner=partner@shi.com&end_customer=it@acme.com"

# Response — data available
{
  "ok": true,
  "partner": {"organization": "SHI", "email": "partner@shi.com"},
  "end_customer": "it@acme.com",
  "as_of": "2026-06-28",
  "device_online": 42,
  "data_available": true
}

# Response — no usage data synced yet
{
  "ok": true,
  "partner": {"organization": "SHI", "email": "partner@shi.com"},
  "end_customer": "it@acme.com",
  "as_of": null,
  "device_online": null,
  "data_available": false
}
GET /api/v1/partners/end_customer/direct_orders Direct postpaid orders placed by a reseller's end customer
partner=<email or org> required — your reseller identifier
end_customer=<email> required — end-user email as it appears in your partner orders
from=YYYY-MM-DD optional — earliest create date (inclusive)
to=YYYY-MM-DD optional — latest create date (inclusive)
include_refunds=1 optional — include refund rows (default: excluded)
page=1 optional — page number, 1-based (default: 1)
per_page=100 optional — rows per page, max 500 (default: 100)
Ownership check: the end customer must appear in at least one order under your partner identifier. Only Postpaid direct orders are returned — prepaid orders are excluded. These are orders the customer placed directly with Xcitium, separate from orders routed through you.
curl -H "X-Api-Key: cam_..." \
  "https://<host>/api/v1/partners/end_customer/direct_orders?partner=partner@shi.com&end_customer=it@acme.com&from=2026-01-01"

# Response
{
  "ok": true,
  "partner": {"organization": "SHI", "email": "partner@shi.com"},
  "end_customer": "it@acme.com",
  "total": 2,
  "page": 1,
  "per_page": 100,
  "orders": [
    {
      "sales_order_number":           "SO-99001",
      "create_date":                  "2026-03-10",
      "order_value":                  2400.00,
      "payment_status":               "Fully Paid",
      "payment_method":               "Credit Card",
      "product_name":                 "Xcitium Advanced Endpoint Protection",
      "product_family":               "AEP",
      "term":                         "1 Year",
      "endpoints":                    100,
      "subscription_expiration_date": "2027-03-10",
      "global_order_state":           "Active",
      "is_refund":                    false
    }
  ]
}
Name Prefix Created Expires Last used Status
No API keys yet.

NeXcitium API Keys

Credentials used for all CAM API calls (v1 and v2). Stored server-side; the secret is never sent back to the browser.

NeXcitium APIs CAM v1 & v2 — shared credentials
New note
Expiry
Reminder

Add a task

Tasks
# Task Status Updated Actions
No tasks yet.

Change password

Edit username