Documentation: - Add ShopDB-API.md with full API reference (all GET/POST endpoints) - Add detailed docs for Update-ShopfloorPCs-Remote, Invoke-RemoteMaintenance, Update-PC-CompleteAsset - Add DATA_COLLECTION_PARITY.md comparing local vs remote data collection - Add HTML versions of all documentation with styled code blocks - Document software deployment mechanism and how to add new apps - Document deprecated scripts (Invoke-RemoteAssetCollection, Install-KioskApp) Script Updates: - Update deployment source paths to network share (tsgwp00525.wjs.geaerospace.net) - InstallDashboard: \\...\scripts\Dashboard\GEAerospaceDashboardSetup.exe - InstallLobbyDisplay: \\...\scripts\LobbyDisplay\GEAerospaceLobbyDisplaySetup.exe - UpdateEMxAuthToken: \\...\scripts\eMx\eMxInfo.txt - DeployUDCWebServerConfig: \\...\scripts\UDC\udc_webserver_settings.json - Update machine network detection to include 100.0.0.* for CMM cases - Rename PC Type #9 from "Part Marker" to "Inspection" Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
587 lines
13 KiB
Markdown
587 lines
13 KiB
Markdown
# ShopDB API Reference
|
|
|
|
REST API for PowerShell data collection scripts and ShopDB integrations.
|
|
|
|
## Table of Contents
|
|
|
|
- [Overview](#overview)
|
|
- [Base URL](#base-url)
|
|
- [Authentication](#authentication)
|
|
- [Endpoints](#endpoints)
|
|
- [GET Endpoints](#get-endpoints)
|
|
- [POST Endpoints](#post-endpoints)
|
|
- [Response Format](#response-format)
|
|
- [Error Handling](#error-handling)
|
|
- [PowerShell Integration](#powershell-integration)
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
The ShopDB API (`api.asp`) provides endpoints for:
|
|
- **Data Collection**: Receive PC asset data from PowerShell scripts
|
|
- **PC Retrieval**: Query lists of shopfloor PCs for remote management
|
|
- **Maintenance**: Update WinRM status, printer mappings, installed applications
|
|
- **Dashboard**: Health checks and monitoring data
|
|
|
|
**Technology**: Classic ASP (VBScript) with MySQL database
|
|
|
|
---
|
|
|
|
## Base URL
|
|
|
|
| Environment | URL |
|
|
|-------------|-----|
|
|
| Production | `https://tsgwp00525.rd.ds.ge.com/shopdb/api.asp` |
|
|
| Development | `http://192.168.122.151:8080/api.asp` |
|
|
|
|
---
|
|
|
|
## Authentication
|
|
|
|
Currently no authentication required. API is accessible from internal network only.
|
|
|
|
---
|
|
|
|
## Endpoints
|
|
|
|
### GET Endpoints
|
|
|
|
#### getDashboardData
|
|
|
|
Health check endpoint to verify API is online.
|
|
|
|
**Request:**
|
|
```
|
|
GET /api.asp?action=getDashboardData
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "ShopDB API is online - v13 (inlined all queries)",
|
|
"version": "1.0",
|
|
"schema": "Phase 2",
|
|
"connStatus": "objConn is Open"
|
|
}
|
|
```
|
|
|
|
**Used By:** Health monitoring, connectivity tests
|
|
|
|
---
|
|
|
|
#### getShopfloorPCs
|
|
|
|
Returns list of all active shopfloor PCs for remote management operations.
|
|
|
|
**Request:**
|
|
```
|
|
GET /api.asp?action=getShopfloorPCs
|
|
GET /api.asp?action=getShopfloorPCs&pctypeid=1
|
|
GET /api.asp?action=getShopfloorPCs&businessunitid=2
|
|
```
|
|
|
|
**Query Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `pctypeid` | int | Filter by PC type (optional) |
|
|
| `businessunitid` | int | Filter by business unit (optional) |
|
|
|
|
**PC Type IDs:**
|
|
|
|
| ID | Type |
|
|
|----|------|
|
|
| 1 | Shopfloor |
|
|
| 2 | CMM |
|
|
| 3 | Wax Trace |
|
|
| 4 | Keyence |
|
|
| 5 | EAS1000 |
|
|
| 6 | Genspect |
|
|
| 7 | Heat Treat |
|
|
| 8 | Engineer |
|
|
| 9 | Standard |
|
|
| 10 | Inspection |
|
|
| 11 | Dashboard |
|
|
| 12 | Lobby Display |
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"count": 45,
|
|
"data": [
|
|
{
|
|
"machineid": 1234,
|
|
"hostname": "G1ZTNCX3ESF",
|
|
"machinenumber": "M0612, M0613",
|
|
"serialnumber": "ABC1234567",
|
|
"ipaddress": "10.134.50.101",
|
|
"loggedinuser": "DOMAIN\\jsmith",
|
|
"pctype": "Shopfloor",
|
|
"pctypeid": 1,
|
|
"businessunit": "Rotor",
|
|
"businessunitid": 2,
|
|
"lastupdated": "1/15/2025 8:30 AM"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**Notes:**
|
|
- Returns only PCs with 10.134.*.* IP addresses by default
|
|
- Dashboard (11) and Lobby Display (12) types bypass IP filter
|
|
- Only includes machinetypeid 33-35 (actual PCs)
|
|
|
|
**Used By:** `Update-ShopfloorPCs-Remote.ps1 -All`, `Invoke-RemoteMaintenance.ps1 -All`
|
|
|
|
---
|
|
|
|
#### getHighUptimePCs
|
|
|
|
Returns PCs that haven't been rebooted in specified number of days.
|
|
|
|
**Request:**
|
|
```
|
|
GET /api.asp?action=getHighUptimePCs&minUptime=30
|
|
```
|
|
|
|
**Query Parameters:**
|
|
|
|
| Parameter | Type | Default | Description |
|
|
|-----------|------|---------|-------------|
|
|
| `minUptime` | int | 10 | Minimum uptime in days |
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"count": 5,
|
|
"minUptime": 30,
|
|
"data": [
|
|
{
|
|
"machineid": 1234,
|
|
"hostname": "SHOPFLOOR-01",
|
|
"machinenumber": "M0612",
|
|
"serialnumber": "ABC1234567",
|
|
"ipaddress": "10.134.50.101",
|
|
"loggedinuser": "DOMAIN\\jsmith",
|
|
"pctype": "Shopfloor",
|
|
"uptime_days": 45,
|
|
"lastboottime": "2024-12-01 08:00:00",
|
|
"pctypeid": 1,
|
|
"businessunit": "Rotor",
|
|
"businessunitid": 2,
|
|
"lastupdated": "1/15/2025 8:30 AM"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**Used By:** `Update-ShopfloorPCs-Remote.ps1 -Reboot -MinUptimeDays 30`
|
|
|
|
---
|
|
|
|
#### getRecordedIP
|
|
|
|
Get the recorded IP address for a specific hostname.
|
|
|
|
**Request:**
|
|
```
|
|
GET /api.asp?action=getRecordedIP&hostname=G1ZTNCX3ESF
|
|
```
|
|
|
|
**Query Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `hostname` | string | Computer name to look up |
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"hostname": "G1ZTNCX3ESF",
|
|
"ipaddress": "10.134.50.101"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
#### getPCMachineRelationships
|
|
|
|
Returns PCs that have relationships to equipment (machines).
|
|
|
|
**Request:**
|
|
```
|
|
GET /api.asp?action=getPCMachineRelationships
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"count": 25,
|
|
"data": [
|
|
{
|
|
"pc_machineid": 1234,
|
|
"pc_hostname": "G1ZTNCX3ESF",
|
|
"equipment_machineid": 5678,
|
|
"equipment_machinenumber": "M0612"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### POST Endpoints
|
|
|
|
#### updateCompleteAsset
|
|
|
|
Main endpoint for PC data collection. Receives comprehensive asset data from PowerShell scripts.
|
|
|
|
**Request:**
|
|
```
|
|
POST /api.asp
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
action=updateCompleteAsset
|
|
&hostname=G1ZTNCX3ESF
|
|
&serialNumber=ABC1234567
|
|
&manufacturer=Dell Inc.
|
|
&model=OptiPlex 7080
|
|
&pcType=Shopfloor
|
|
&loggedInUser=DOMAIN\jsmith
|
|
&machineNo=M0612
|
|
&osVersion=Microsoft Windows 10 Enterprise
|
|
&lastBootTime=2025-01-15 08:30:00
|
|
&hasVnc=1
|
|
&hasWinRM=1
|
|
&networkInterfaces=[...]
|
|
&dncConfig=[...]
|
|
&installedApps=[...]
|
|
```
|
|
|
|
**Required Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `hostname` | string | Computer name |
|
|
| `serialNumber` | string | BIOS serial number |
|
|
|
|
**Optional Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `manufacturer` | string | System manufacturer |
|
|
| `model` | string | System model |
|
|
| `pcType` | string | PC classification (Shopfloor, CMM, etc.) |
|
|
| `loggedInUser` | string | Currently logged in user |
|
|
| `machineNo` | string | Associated machine number(s) |
|
|
| `osVersion` | string | Windows version |
|
|
| `lastBootTime` | datetime | Last boot timestamp |
|
|
| `hasVnc` | int | VNC installed (0/1) |
|
|
| `hasWinRM` | int | WinRM enabled (0/1) |
|
|
| `networkInterfaces` | JSON | Network adapter configurations |
|
|
| `dncConfig` | JSON | DNC/FTP settings |
|
|
| `installedApps` | JSON | Tracked applications |
|
|
| `warrantyEndDate` | date | Dell warranty expiration |
|
|
| `warrantyStatus` | string | Warranty status text |
|
|
| `dncDualPathEnabled` | int | Dual path enabled (0/1) |
|
|
| `dncPath1Name` | string | Path 1 name |
|
|
| `dncPath2Name` | string | Path 2 name |
|
|
|
|
**Network Interfaces JSON Format:**
|
|
```json
|
|
[
|
|
{
|
|
"interfaceName": "Ethernet0",
|
|
"ipAddress": "10.134.50.101",
|
|
"subnetMask": "24",
|
|
"defaultGateway": "10.134.50.1",
|
|
"macAddress": "00-11-22-33-44-55",
|
|
"isDhcp": 0,
|
|
"isActive": 1,
|
|
"isMachineNetwork": 0,
|
|
"isPrimary": 1
|
|
}
|
|
]
|
|
```
|
|
|
|
**DNC Config JSON Format:**
|
|
```json
|
|
{
|
|
"site": "WJF",
|
|
"cnc": "FANUC",
|
|
"ncif": "FOCAS2",
|
|
"machineNo": "M0612",
|
|
"ftpPrimary": "10.134.50.10",
|
|
"ftpSecondary": "10.134.50.11"
|
|
}
|
|
```
|
|
|
|
**Installed Apps JSON Format:**
|
|
```json
|
|
[
|
|
{
|
|
"appid": 5,
|
|
"appname": "PC-DMIS",
|
|
"version": "2023.1",
|
|
"isactive": 1
|
|
}
|
|
]
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "PC data stored successfully",
|
|
"pcid": 1234,
|
|
"hostname": "G1ZTNCX3ESF",
|
|
"debugMsg": "PCType=Shopfloor, DNC=YES, Net=YES"
|
|
}
|
|
```
|
|
|
|
**Used By:** `Update-ShopfloorPCs-Remote.ps1`, `Update-PC-CompleteAsset.ps1`
|
|
|
|
---
|
|
|
|
#### updatePrinterMapping
|
|
|
|
Links a PC to its default printer.
|
|
|
|
**Request:**
|
|
```
|
|
POST /api.asp
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
action=updatePrinterMapping
|
|
&hostname=G1ZTNCX3ESF
|
|
&printerFQDN=printer01.domain.com
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `hostname` | string | PC hostname |
|
|
| `printerFQDN` | string | Printer FQDN, Windows name, or IP |
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Printer mapping updated",
|
|
"printerId": 45,
|
|
"machinesUpdated": 1,
|
|
"matchMethod": "fqdn"
|
|
}
|
|
```
|
|
|
|
**Match Methods:** `fqdn`, `windowsname`, `ip`
|
|
|
|
---
|
|
|
|
#### updateInstalledApps
|
|
|
|
Updates the list of tracked applications installed on a PC.
|
|
|
|
**Request:**
|
|
```
|
|
POST /api.asp
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
action=updateInstalledApps
|
|
&hostname=G1ZTNCX3ESF
|
|
&installedApps=[{"appid":5,"appname":"PC-DMIS","version":"2023.1","isactive":1}]
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `hostname` | string | PC hostname |
|
|
| `installedApps` | JSON | Array of tracked applications |
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Installed apps updated",
|
|
"appsUpdated": 3
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
#### updateWinRMStatus
|
|
|
|
Updates the WinRM enabled status for a PC.
|
|
|
|
**Request:**
|
|
```
|
|
POST /api.asp
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
action=updateWinRMStatus
|
|
&hostname=G1ZTNCX3ESF
|
|
&hasWinRM=1
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `hostname` | string | PC hostname |
|
|
| `hasWinRM` | int | WinRM status (0=disabled, 1=enabled) |
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "WinRM status updated",
|
|
"hostname": "G1ZTNCX3ESF",
|
|
"iswinrm": 1
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
#### updateMachinePositions
|
|
|
|
Bulk update machine positions on the floor map.
|
|
|
|
**Request:**
|
|
```
|
|
POST /api.asp
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
action=updateMachinePositions
|
|
&changes=[{"machineid":1234,"mapleft":100,"maptop":200}]
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Description |
|
|
|-----------|------|-------------|
|
|
| `changes` | JSON | Array of position updates |
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"updated": 5
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Response Format
|
|
|
|
All responses are JSON with consistent structure:
|
|
|
|
**Success Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Operation completed",
|
|
"data": [...]
|
|
}
|
|
```
|
|
|
|
**Error Response:**
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": "Error description"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Error Handling
|
|
|
|
| Error | Cause | Solution |
|
|
|-------|-------|----------|
|
|
| `hostname and serialNumber are required` | Missing required fields | Include all required parameters |
|
|
| `PC not found: hostname` | Hostname not in database | Verify hostname or run initial collection |
|
|
| `Printer not found: printerFQDN` | Printer not in database | Add printer to ShopDB first |
|
|
| `Invalid action: xyz` | Unknown action parameter | Check action spelling |
|
|
| `Database error: ...` | MySQL error | Check database connectivity |
|
|
|
|
---
|
|
|
|
## PowerShell Integration
|
|
|
|
### Sending Data to API
|
|
|
|
```powershell
|
|
# Build POST body
|
|
$body = @{
|
|
action = "updateCompleteAsset"
|
|
hostname = $env:COMPUTERNAME
|
|
serialNumber = (Get-CimInstance Win32_BIOS).SerialNumber
|
|
manufacturer = (Get-CimInstance Win32_ComputerSystem).Manufacturer
|
|
model = (Get-CimInstance Win32_ComputerSystem).Model
|
|
pcType = "Shopfloor"
|
|
}
|
|
|
|
# Send to API
|
|
$response = Invoke-RestMethod -Uri "https://server/shopdb/api.asp" -Method POST -Body $body
|
|
```
|
|
|
|
### Retrieving PC List
|
|
|
|
```powershell
|
|
# Get all shopfloor PCs
|
|
$response = Invoke-RestMethod -Uri "https://server/shopdb/api.asp?action=getShopfloorPCs"
|
|
$pcs = $response.data
|
|
|
|
# Get CMM PCs only
|
|
$response = Invoke-RestMethod -Uri "https://server/shopdb/api.asp?action=getShopfloorPCs&pctypeid=2"
|
|
|
|
# Get high uptime PCs
|
|
$response = Invoke-RestMethod -Uri "https://server/shopdb/api.asp?action=getHighUptimePCs&minUptime=30"
|
|
```
|
|
|
|
### Script Usage Examples
|
|
|
|
```powershell
|
|
# Update-ShopfloorPCs-Remote.ps1 uses getShopfloorPCs
|
|
.\Update-ShopfloorPCs-Remote.ps1 -All -Credential $cred
|
|
# Internally calls: GET /api.asp?action=getShopfloorPCs
|
|
|
|
# Reboot mode uses getHighUptimePCs
|
|
.\Update-ShopfloorPCs-Remote.ps1 -Reboot -MinUptimeDays 30
|
|
# Internally calls: GET /api.asp?action=getHighUptimePCs&minUptime=30
|
|
|
|
# Invoke-RemoteMaintenance.ps1 filters by PC type
|
|
.\Invoke-RemoteMaintenance.ps1 -PcType CMM -Task DiskCleanup
|
|
# Internally calls: GET /api.asp?action=getShopfloorPCs&pctypeid=2
|
|
```
|
|
|
|
---
|
|
|
|
## Database Schema Reference
|
|
|
|
The API interacts with these primary tables:
|
|
|
|
| Table | Purpose |
|
|
|-------|---------|
|
|
| `machines` | All PCs and equipment (pctypeid IS NOT NULL for PCs) |
|
|
| `communications` | Network interfaces (IP, MAC, gateway) |
|
|
| `dncconfig` | DNC/FTP configurations |
|
|
| `commconfig` | Communication port settings |
|
|
| `installedapps` | Application tracking |
|
|
| `pctype` | PC type definitions |
|
|
| `businessunits` | Business unit definitions |
|
|
| `printers` | Printer inventory |
|
|
|
|
**PC Identification:**
|
|
- PCs have `machinetypeid IN (33, 34, 35)`
|
|
- PCs have `pctypeid IS NOT NULL`
|
|
- Primary network is `isprimary = 1` in communications table
|