{
  "description": "Combined Trellix, Splunk, and IBM Maximo Inventory endpoints",
  "endpoints": {
    "asset_repair_history_get": {
      "example": "http://localhost:5000/api/v1/asset_repair_history/PUMP-042?siteid=FLEET",
      "method": "GET",
      "params": {
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/asset_repair_history/{assetnum}"
    },
    "asset_repair_history_list": {
      "example": "http://localhost:5000/api/v1/asset_repair_history?assetnum=PUMP-042",
      "method": "GET",
      "params": {
        "assetnum": "Filter by asset number (optional)",
        "limit": "Max records (optional, default 100)",
        "location": "Filter by location (optional)",
        "manufacturer": "Filter by manufacturer (optional)",
        "offset": "Skip records (optional, default 0)",
        "orgid": "Filter by org ID (optional)",
        "siteid": "Filter by site ID (optional)",
        "status": "Filter by asset status (optional)"
      },
      "url": "/api/v1/asset_repair_history"
    },
    "assets_get": {
      "example": "http://localhost:5000/api/v1/assets/UA03X9?siteid=RIVERTON",
      "method": "GET",
      "params": {
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/assets/{assetnum}"
    },
    "assets_list": {
      "example": "http://localhost:5000/api/v1/assets?siteid=RIVERTON&status=OPERATING",
      "method": "GET",
      "params": {
        "assetnum": "Filter by asset number (optional)",
        "disabled": "Filter by disabled true|false (optional)",
        "isrunning": "Filter by isrunning true|false (optional)",
        "limit": "Max records (optional, default 100)",
        "location": "Filter by location (optional)",
        "manufacturer": "Filter by manufacturer (optional)",
        "offset": "Skip records (optional, default 0)",
        "parent": "Filter by parent assetnum (optional)",
        "siteid": "Filter by site ID (optional)",
        "status": "Filter by status (optional)"
      },
      "url": "/api/v1/assets"
    },
    "assignments_get": {
      "example": "http://localhost:5000/api/v1/assignments/ASG-0001?siteid=RIVERTON",
      "method": "GET",
      "params": {
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/assignments/{assignmentid}"
    },
    "assignments_list": {
      "example": "http://localhost:5000/api/v1/assignments?siteid=RIVERTON&status=ASSIGNED",
      "method": "GET",
      "params": {
        "craft": "Filter by craft (optional)",
        "laborcode": "Filter by laborcode (optional)",
        "limit": "Max records (optional, default 100)",
        "offset": "Skip records (optional, default 0)",
        "siteid": "Filter by siteid (optional)",
        "status": "Filter by status (optional)",
        "wonum": "Filter by wonum (optional)",
        "wplaborid": "Filter by wplaborid (optional)"
      },
      "url": "/api/v1/assignments"
    },
    "inventory_create": {
      "content_type": "application/json",
      "method": "POST",
      "url": "/api/v1/inventory"
    },
    "inventory_delete": {
      "method": "DELETE",
      "url": "/api/v1/inventory/{itemnum}/{location}"
    },
    "inventory_get": {
      "example": "http://localhost:5000/api/v1/inventory/PUMP150/CENTRAL",
      "method": "GET",
      "url": "/api/v1/inventory/{itemnum}/{location}"
    },
    "inventory_list": {
      "example": "http://localhost:5000/api/v1/inventory?location=CENTRAL&invstatus=ACTIVE",
      "method": "GET",
      "params": {
        "invstatus": "Filter by status (optional)",
        "itemnum": "Filter by item number (optional)",
        "limit": "Max records (optional, default 100)",
        "location": "Filter by location (optional)",
        "manufacturer": "Filter by manufacturer (optional)",
        "offset": "Skip records (optional, default 0)",
        "vendor": "Filter by vendor (optional)"
      },
      "url": "/api/v1/inventory"
    },
    "inventory_update": {
      "content_type": "application/json",
      "method": "PUT",
      "url": "/api/v1/inventory/{itemnum}/{location}"
    },
    "inventory_viewer": {
      "description": "Web interface for viewing inventory records",
      "example": "http://localhost:5000/inventory?itemnum=PUMP150",
      "method": "GET",
      "url": "/inventory"
    },
    "labor_get": {
      "example": "http://localhost:5000/api/v1/labor/LAB0001?orgid=SOC",
      "method": "GET",
      "params": {
        "orgid": "Org ID (optional)"
      },
      "url": "/api/v1/labor/{laborcode}"
    },
    "labor_list": {
      "example": "http://localhost:5000/api/v1/labor?worksite=RIVERTON&status=ACTIVE",
      "method": "GET",
      "params": {
        "craft": "Filter by craft (optional)",
        "laborcode": "Filter by laborcode (optional)",
        "limit": "Max records (optional, default 100)",
        "offset": "Skip records (optional, default 0)",
        "orgid": "Filter by orgid (optional)",
        "personid": "Filter by personid (optional)",
        "status": "Filter by status (optional)",
        "worksite": "Filter by worksite (optional)"
      },
      "url": "/api/v1/labor"
    },
    "locations_get": {
      "example": "http://localhost:5000/api/v1/locations/CENTRAL?siteid=RIVERTON",
      "method": "GET",
      "params": {
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/locations/{location}"
    },
    "locations_list": {
      "example": "http://localhost:5000/api/v1/locations?siteid=RIVERTON&type=STOREROOM",
      "method": "GET",
      "params": {
        "disabled": "Filter by disabled true|false (optional)",
        "limit": "Max records (optional, default 100)",
        "location": "Filter by location (optional)",
        "offset": "Skip records (optional, default 0)",
        "parent": "Filter by parent location (optional)",
        "siteid": "Filter by site ID (optional)",
        "status": "Filter by status (optional)",
        "type": "Filter by type (optional)"
      },
      "url": "/api/v1/locations"
    },
    "material_transactions_create": {
      "content_type": "application/json",
      "example": "curl -X POST http://localhost:5000/api/v1/material_transactions -H 'Content-Type: application/json' -d '{\"itemnum\":\"BEARING-204\",\"quantity\":2,\"transdate\":\"2026-01-15\",\"location\":\"DALLAS\",\"siteid\":\"FLEET\",\"assetnum\":\"PUMP-042\",\"wonum\":\"WO-44210\"}'",
      "method": "POST",
      "url": "/api/v1/material_transactions"
    },
    "material_transactions_list": {
      "example": "http://localhost:5000/api/v1/material_transactions?itemnum=BEARING-204&months=6",
      "method": "GET",
      "params": {
        "assetnum": "Filter by asset number (optional)",
        "itemnum": "Filter by item number (optional)",
        "months": "Lookback window in months (optional, default 12)"
      },
      "url": "/api/v1/material_transactions"
    },
    "maximo_inventory_get": {
      "example": "http://localhost:5000/api/v1/maximo_inventory/0012TR/0437?siteid=RIVERTON",
      "method": "GET",
      "params": {
        "itemsetid": "Item set ID (optional)",
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/maximo_inventory/{itemnum}/{location}"
    },
    "maximo_inventory_list": {
      "example": "http://localhost:5000/api/v1/maximo_inventory?siteid=RIVERTON&status=ACTIVE",
      "method": "GET",
      "params": {
        "costtype": "Filter by cost type (optional)",
        "internal": "Filter by internal true|false (optional)",
        "itemnum": "Filter by item number (optional)",
        "itemtype": "Filter by item type (optional)",
        "limit": "Max records (optional, default 100)",
        "location": "Filter by storeroom location (optional)",
        "offset": "Skip records (optional, default 0)",
        "reorder": "Filter by reorder true|false (optional)",
        "siteid": "Filter by site ID (optional)",
        "status": "Filter by status (optional)"
      },
      "url": "/api/v1/maximo_inventory"
    },
    "persons_get": {
      "example": "http://localhost:5000/api/v1/persons/WILSON",
      "method": "GET",
      "url": "/api/v1/persons/{personid}"
    },
    "persons_list": {
      "example": "http://localhost:5000/api/v1/persons?status=ACTIVE&limit=10",
      "method": "GET",
      "params": {
        "displayname": "Filter by display name (optional)",
        "email": "Filter by email (optional)",
        "limit": "Max records (optional, default 100)",
        "offset": "Skip records (optional, default 0)",
        "personid": "Filter by personid (optional)",
        "status": "Filter by status (optional)"
      },
      "url": "/api/v1/persons"
    },
    "pms_get": {
      "example": "http://localhost:5000/api/v1/pms/PM00010?siteid=FLEET",
      "method": "GET",
      "params": {
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/pms/{pmnum}"
    },
    "pms_list": {
      "example": "http://localhost:5000/api/v1/pms?siteid=BEDFORD&assetnum=PUMP-042",
      "method": "GET",
      "params": {
        "assetnum": "Filter by asset number (optional)",
        "frequnit": "Filter by frequency unit (optional)",
        "jpnum": "Filter by job plan (optional)",
        "limit": "Max records (optional, default 100)",
        "location": "Filter by location (optional)",
        "offset": "Skip records (optional, default 0)",
        "pmnum": "Filter by PM number (optional)",
        "siteid": "Filter by site ID (optional)",
        "status": "Filter by status (optional)",
        "worktype": "Filter by work type (optional)",
        "wostatus": "Filter by WO status (optional)"
      },
      "url": "/api/v1/pms"
    },
    "purchase_orders_get": {
      "example": "http://localhost:5000/api/v1/purchase_orders/0000461?siteid=RIVERTON",
      "method": "GET",
      "params": {
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/purchase_orders/{ponum}"
    },
    "purchase_orders_list": {
      "example": "http://localhost:5000/api/v1/purchase_orders?siteid=RIVERTON&status=APPR",
      "method": "GET",
      "params": {
        "internal": "Filter by internal true|false (optional)",
        "limit": "Max records (optional, default 100)",
        "offset": "Skip records (optional, default 0)",
        "ponum": "Filter by PO number (optional)",
        "potype": "Filter by PO type (optional)",
        "siteid": "Filter by site ID (optional)",
        "status": "Filter by status (optional)",
        "vendor": "Filter by vendor (optional)"
      },
      "url": "/api/v1/purchase_orders"
    },
    "reservations_create": {
      "body": {
        "itemnum": "Item number (required)",
        "location": "Storeroom location (required)",
        "requesteddate": "Date requested YYYY-MM-DD (required)",
        "requireddate": "Date needed YYYY-MM-DD (required)",
        "reservationtype": "HARD|SOFT|Automatic (required)",
        "reservedqty": "Quantity to reserve (required)"
      },
      "content_type": "application/json",
      "method": "POST",
      "url": "/api/v1/reservations"
    },
    "reservations_list": {
      "example": "http://localhost:5000/api/v1/reservations?itemnum=BOLT-1/2",
      "method": "GET",
      "params": {
        "itemnum": "Filter by item number (optional)",
        "location": "Filter by storeroom (optional)",
        "reservationtype": "Filter by type: HARD|SOFT|Automatic (optional)"
      },
      "url": "/api/v1/reservations"
    },
    "splunk_search": {
      "example": "http://localhost:5000/splunk/search?host=WORKSTATION-1847&source_ip=10.18.45.223",
      "method": "GET",
      "params": {
        "host": "hostname to search (optional)",
        "source_ip": "source IP to search (optional)",
        "time_range": "time range, e.g., 30m (optional)",
        "timestamp": "alert timestamp (optional)"
      },
      "url": "/splunk/search"
    },
    "trellix_alerts": {
      "example": "http://localhost:5000/trellix-wise/alerts?severity=high&status=open&limit=10",
      "method": "GET",
      "params": {
        "limit": "integer (optional, default 10)",
        "severity": "high|medium|low (optional)",
        "status": "open|closed (optional)"
      },
      "url": "/trellix-wise/alerts"
    },
    "worklogs_get": {
      "example": "http://localhost:5000/api/v1/worklogs/7000000",
      "method": "GET",
      "url": "/api/v1/worklogs/{worklogid}"
    },
    "worklogs_list": {
      "example": "http://localhost:5000/api/v1/worklogs?class=WORKORDER&logtype=WORK&recordkey=WO-44001",
      "method": "GET",
      "params": {
        "class": "Filter by class (optional)",
        "clientviewable": "Filter by client viewable true|false (optional)",
        "createby": "Filter by created by (optional)",
        "limit": "Max records (optional, default 100)",
        "logtype": "Filter by logtype (optional)",
        "modifyby": "Filter by modified by (optional)",
        "offset": "Skip records (optional, default 0)",
        "orgid": "Filter by org ID (optional)",
        "recordkey": "Filter by owner key (wonum) (optional)",
        "siteid": "Filter by site ID (optional)",
        "summary": "Filter by summary text (optional)"
      },
      "url": "/api/v1/worklogs"
    },
    "workorders_get": {
      "example": "http://localhost:5000/api/v1/workorders/588197?siteid=RIVERTON",
      "method": "GET",
      "params": {
        "siteid": "Site ID (optional)"
      },
      "url": "/api/v1/workorders/{wonum}"
    },
    "workorders_list": {
      "example": "http://localhost:5000/api/v1/workorders?siteid=RIVERTON&status=APPR",
      "method": "GET",
      "params": {
        "assetnum": "Filter by asset number (optional)",
        "limit": "Max records (optional, default 100)",
        "location": "Filter by location (optional)",
        "offset": "Skip records (optional, default 0)",
        "reportedby": "Filter by reported by (optional)",
        "siteid": "Filter by site ID (optional)",
        "status": "Filter by status (optional)",
        "wonum": "Filter by work order number (optional)",
        "worktype": "Filter by work type (optional)"
      },
      "url": "/api/v1/workorders"
    }
  },
  "service": "Unified Mock API Server",
  "version": "2.0.0"
}
