# Admin API Documentation

**Server**: `apps/admin_api/admin_api.ts`
**Port**: 3999
**Purpose**: Private admin operations for factory, inventory, shipping, and moderation

## Overview

The Admin API is a private server that handles:
- Account and user moderation
- Factory operations (fabrication, CNC, Fusion 360)
- Inventory management
- Shipping and fulfillment
- Shopify integration
- TV channel and media management
- Analytics and reporting

## Authentication

### Required Headers

All endpoints require:
```
Authorization: <admin-access-token>
```

### Access Policies

Different endpoints require different access policies:
- **Moderator**: Community moderation functions
- **Admin**: Full admin access
- **Fabricator**: Factory operations
- **Inventory**: Inventory management
- **CNC**: CNC machine access
- **Fusion**: Fusion 360 integration
- **Pose**: Pose scanning tool access

### Network Restrictions

In production, the Admin API runs on an EC2 server with security groups that only allow specific IP addresses.

---

## Endpoints

### Admin Verification

#### Check Moderator Access
```
GET /admin/whoami
```
**Returns**: Moderator API key validity

#### Test Access Levels
```
GET /admin/access/:accessLevel
```
**Params**: `accessLevel` (admin, community, fabricator, inventory, etc.)
**Returns**: Access test result

---

### Account Management (Admin)

#### Get Staff Accounts
```
GET /admin/accounts/staff
```
**Returns**: List of staff accounts

#### Create Basic Account
```
POST /admin/account
```
**Body**: Account details
**Returns**: New account

#### Create Onboarding Account
```
POST /admin/onboarding/account
```
**Body**: Onboarding account details
**Returns**: New onboarding account

#### Add Access Policy
```
PUT /admin/account/:bigscreenAccountId/access_policy/:accessPolicy
```
**Returns**: Updated account

#### Remove Access Policy
```
DELETE /admin/account/:bigscreenAccountId/access_policy/:accessPolicy
```
**Returns**: Updated account

#### Get IP Whitelist
```
GET /admin/account/:bigscreenAccountId/security_groups
```
**Returns**: Security groups (IP whitelist)

#### Add to IP Whitelist
```
PUT /admin/account/:bigscreenAccountId/security_groups/:ip
```
**Returns**: Updated security groups

#### Remove from IP Whitelist
```
DELETE /admin/account/:bigscreenAccountId/security_groups/:ip
```
**Returns**: Updated security groups

---

### Moderator Functions

#### Send Alert
```
POST /admin/alert
```
**Body**: Alert details
**Returns**: Alert confirmation

#### Get Auth Schemas
```
GET /admin/auth/schemas
```
**Returns**: Authentication schemas

#### Get Profile
```
GET /admin/profile
```
**Returns**: Logged-in admin profile

#### Query Accounts
```
GET /admin/account/query/:field/:value
```
**Params**: `field` (email, username, etc.), `value`
**Returns**: Matching accounts

#### Search Device History
```
GET /admin/search/:field/:value
```
**Params**: `field`, `value`
**Returns**: Device history results

#### Get Account
```
GET /admin/account/:bigscreenAccountId
```
**Returns**: Account details

#### Ban User
```
PUT /admin/account/:bigscreenAccountId/ban
```
**Body**: Ban reason and duration
**Returns**: Banned account

#### Unban User
```
PUT /admin/account/:bigscreenAccountId/unban
```
**Returns**: Unbanned account

#### Disable Account
```
PUT /admin/account/:bigscreenAccountId/disable
```
**Returns**: Disabled account

#### Create Admin Note
```
POST /admin/account/:bigscreenAccountId/note
```
**Body**: Note content
**Returns**: Created note

#### Get Email Update Ticket
```
GET /admin/account/:bigscreenAccountId/email_update_ticket
```
**Returns**: Email update ticket

#### Create Single-Use Login Token
```
GET /admin/account/:bigscreenAccountId/token
```
**Returns**: Single-use login token

#### Create Login Token (v2)
```
GET /admin/account/:bigscreenAccountId/token2
```
**Returns**: Login token

---

### Reports

#### Get Reports Against User
```
GET /admin/account/:bigscreenAccountId/reports
```
**Returns**: Reports for account

#### Get All Account Reports
```
GET /admin/account_reports
```
**Returns**: All account reports

#### Get All Room Reports
```
GET /admin/room_reports
```
**Returns**: All room reports

#### Get Specific Account Report
```
GET /admin/account_report/:accountReportId
```
**Returns**: Report details

#### Get Room Report
```
GET /admin/room_report/:roomReportId
```
**Returns**: Room report details

---

### Device & IP Tracking

#### Get Device History
```
GET /admin/account/:bigscreenAccountId/device_history
```
**Returns**: Device usage history

#### Get Device Status
```
GET /admin/device/:deviceUniqueIdentifier
```
**Returns**: Device status

#### Update Device Status
```
PUT /admin/device/:deviceUniqueIdentifier
```
**Body**: Status updates
**Returns**: Updated device

#### Get IP Status
```
GET /admin/ip/:ip
```
**Returns**: IP status

#### Update IP Status
```
PUT /admin/ip/:ip
```
**Body**: Status updates
**Returns**: Updated IP

---

### Analytics

#### Get Login History
```
GET /admin/account/:bigscreenAccountId/history
```
**Returns**: Login history

#### Get Analytics Data
```
GET /admin/account/:bigscreenAccountId/event/:event
```
**Params**: `event` type
**Returns**: Event analytics

#### Get Account Stats
```
GET /admin/account/:bigscreenAccountId/stats
```
**Returns**: Account statistics

#### Get Account Logs
```
GET /admin/account/:bigscreenAccountId/logs
```
**Returns**: Account logs

#### General Log Queries
```
GET /admin/logs
GET /admin/logs/:logType
```
**Params**: Optional `logType`
**Returns**: System logs

---

### TV Channels Management

#### Create Channel
```
POST /admin/tv/channel
```
**Body**: Channel details
**Returns**: New channel

#### Update Channel
```
PUT /admin/tv/channel
```
**Body**: Channel updates
**Returns**: Updated channel

#### Delete Channel
```
DELETE /admin/tv/channel/:channelId
```
**Returns**: Deletion confirmation

#### Get Channel
```
GET /admin/tv/channel/:channelId
```
**Returns**: Channel details

#### Get All Channels
```
GET /admin/tv/Channels
```
**Returns**: All channels

#### Add Stream to Channel
```
POST /admin/tv/stream
```
**Body**: Stream details
**Returns**: Updated channel

#### Delete Stream
```
DELETE /admin/tv/stream/:channelId/:streamIndex
```
**Returns**: Updated channel

#### Create Channel Group
```
POST /admin/tv/channel_group
```
**Body**: Channel group details
**Returns**: New channel group

#### Update Channel Group
```
PUT /admin/tv/channel_group
```
**Body**: Channel group updates
**Returns**: Updated channel group

#### Get Channel Group
```
GET /admin/tv/channel_group/:channelGroupId
```
**Returns**: Channel group details

#### Delete Channel Group
```
DELETE /admin/tv/channel_group/:channelGroupId
```
**Returns**: Deletion confirmation

#### Rebuild Channel Group Textures
```
GET /admin/tv/rebuild_channel_group/:channelGroupId
```
**Returns**: Rebuild result

#### Get All Channel Groups
```
GET /admin/tv/channel_groups
```
**Returns**: All channel groups

#### Get Channel Query Values
```
GET /admin/tv/channel_query/:name
```
**Returns**: Query results

---

### Media & Entitlements Management

#### Create Media Item
```
POST /admin/media/item
```
**Body**: Item details
**Returns**: New media item

#### Update Media Item
```
PUT /admin/media/item
```
**Body**: Item updates
**Returns**: Updated item

#### Clone Media Item
```
COPY /admin/media/item/:id
```
**Returns**: Cloned item

#### Get All Items
```
GET /admin/media/items
```
**Returns**: All media items

#### Get Item
```
GET /admin/media/item/:id
```
**Returns**: Item details

#### Delete Item
```
DELETE /admin/media/item/:id
```
**Returns**: Deletion confirmation

#### Get CDN Info
```
GET /admin/media/cdn/:cdn/:cdnId
```
**Returns**: CDN information

#### Get Media Schemas
```
GET /admin/media/schemas
```
**Returns**: Media schemas

#### Create Product
```
POST /admin/media/product
```
**Body**: Product details
**Returns**: New product

#### Update Product
```
PUT /admin/media/product
```
**Body**: Product updates
**Returns**: Updated product

#### Clone Product
```
COPY /admin/media/product/:id
```
**Returns**: Cloned product

#### Delete Product
```
DELETE /admin/media/product/:id
```
**Returns**: Deletion confirmation

#### Get All Products
```
GET /admin/media/products
```
**Returns**: All products

#### Get Product
```
GET /admin/media/product/:id
```
**Returns**: Product details

#### Create SKU
```
POST /admin/media/product/:id/sku
```
**Body**: SKU details
**Returns**: Updated product

#### Delete SKU
```
DELETE /admin/media/product/:id/sku/:skuId
```
**Returns**: Updated product

#### Get Showings
```
GET /admin/media/showings/:synchronizationInterval/:past/:future
```
**Returns**: Media showings

#### Get Media Session Events
```
GET /admin/media/events/:productId
```
**Returns**: Session events

#### Export Products as TSV
```
GET /admin/media/products/export
```
**Returns**: TSV file

#### Create Entitlement
```
POST /admin/media/entitlement
```
**Body**: Entitlement details
**Returns**: New entitlement

#### Update Entitlement
```
PUT /admin/media/entitlement/:id
```
**Body**: Entitlement updates
**Returns**: Updated entitlement

#### Query Entitlements
```
POST /admin/media/entitlements/query
```
**Body**: Query parameters
**Returns**: Matching entitlements

#### Get Entitlement
```
GET /admin/media/entitlement/:id
```
**Returns**: Entitlement details

#### Get All Entitlements
```
GET /admin/media/entitlements
```
**Returns**: All entitlements

#### Export Entitlements as CSV
```
GET /admin/media/entitlements/export
```
**Returns**: CSV file

#### Create Category
```
POST /admin/media/category
```
**Body**: Category details
**Returns**: New category

#### Update Category
```
PUT /admin/media/category
```
**Body**: Category updates
**Returns**: Updated category

#### Get Categories
```
GET /admin/media/categories
```
**Returns**: All categories

#### Get Category
```
GET /admin/media/category
```
**Returns**: Category details

#### Delete Category
```
DELETE /admin/media/category/:id
```
**Returns**: Deletion confirmation

#### Create Product Collection
```
POST /admin/media/collection
```
**Body**: Collection details
**Returns**: New collection

#### Update Collection
```
PUT /admin/media/collection
```
**Body**: Collection updates
**Returns**: Updated collection

#### Clone Collection
```
COPY /admin/media/collection/:id
```
**Returns**: Cloned collection

#### Get Collections
```
GET /admin/media/collections
```
**Returns**: All collections

#### Get Collection
```
GET /admin/media/collection/:id
```
**Returns**: Collection details

#### Delete Collection
```
DELETE /admin/media/collection/:id
```
**Returns**: Deletion confirmation

#### Media Search Query
```
POST /admin/media/query
```
**Body**: Search parameters
**Returns**: Search results

#### Generate Coupons
```
POST /admin/media/coupons
```
**Body**: Coupon details
**Returns**: Generated coupons

#### Update Coupon
```
PUT /admin/media/coupon
```
**Body**: Coupon updates
**Returns**: Updated coupon

#### Get Coupons
```
GET /admin/media/coupons
```
**Returns**: All coupons

#### Get Coupon
```
GET /admin/media/coupon/:id
```
**Returns**: Coupon details

#### Delete Coupon
```
DELETE /admin/media/coupon/:id
```
**Returns**: Deletion confirmation

---

### RDC Management

#### Get RDC Builds List
```
GET /admin/rdc
```
**Returns**: Available RDC builds

#### Get Active RDC Build
```
GET /admin/rdc/active
```
**Returns**: Currently active build

#### Set Active RDC Build
```
PUT /admin/rdc/active/:build
```
**Returns**: Updated active build

---

### Topics

#### Create Topic
```
POST /admin/topic
```
**Body**: Topic details
**Returns**: New topic

#### Update Topic
```
PUT /admin/topic/:id
```
**Body**: Topic updates
**Returns**: Updated topic

#### Get Topics
```
GET /admin/topics
```
**Returns**: All topics

#### Delete Topic
```
DELETE /admin/topic/:id
```
**Returns**: Deletion confirmation

---

### Media Rebuilding

#### Rebuild Category Textures
```
GET /admin/media/rebuild/category/:id
```
**Returns**: Rebuild result

#### Rebuild Product SKUs
```
GET /admin/media/rebuild/skus
```
**Returns**: Rebuild result

---

### Fabricator - Shopify & BigOrder Management

#### Sync Orders
```
GET /admin/shop/sync
GET /admin/shop/sync/:shopifyOrderId
```
**Returns**: Sync result (not fully implemented)

#### Create Test Order
```
POST /admin/shop/test_order
```
**Body**: Test order details
**Returns**: New test order

#### Create Custom Shopify Order
```
POST /admin/shop/shopify_order
```
**Body**: Order details
**Returns**: New order

#### Create Custom Order (v2)
```
POST /admin/shop/shopify_order_2
```
**Body**: Order details
**Returns**: New order

#### Get Shopify Orders
```
GET /admin/shop/shopify_orders
```
**Query**: Filter parameters
**Returns**: Shopify orders

#### Get Shopify Order
```
GET /admin/shop/shopify_order/:shopifyOrderId
```
**Returns**: Order details

#### Get Cached Shopify Order
```
GET /admin/shop/shopify_order_cache/:shopifyOrderId
```
**Returns**: Cached order data

#### Get Fulfillments
```
GET /admin/shop/shopify_order/:shopifyOrderId/fulfillments
```
**Returns**: Order fulfillments

#### Get Fulfillment Orders
```
GET /admin/shop/shopify_order/:shopifyOrderId/fulfillment_orders
```
**Returns**: Fulfillment orders

#### Add Line Item
```
POST /admin/shop/shopify_order/:shopifyOrderId/line_item
```
**Body**: Line item details
**Returns**: Updated order

#### Remove Line Item
```
DELETE /admin/shop/shopify_order/:shopifyOrderId/line_item/:shopifyLineItemId
```
**Returns**: Updated order

#### Get Order Risks
```
GET /admin/shop/shopify_order/:shopifyOrderId/risks
```
**Returns**: Order risk assessment

#### Merge Shopify Orders
```
POST /admin/shop/shopify_orders/pair
```
**Body**: Order pair details
**Returns**: Merged order pair

#### Get Pair by Name
```
GET /admin/shop/shopify_orders/pair
```
**Query**: Pair name
**Returns**: Order pair

#### Get All Pairs
```
GET /admin/shop/shopify_orders/pairs
```
**Returns**: All order pairs

#### Delete Pair
```
DELETE /admin/shop/shopify_orders/pair/:pairId
```
**Returns**: Deletion confirmation

#### Delete Order
```
DELETE /admin/shop/shopify_order/:shopifyOrderId
```
**Returns**: Deletion confirmation

#### Get Big Orders
```
GET /admin/shop/orders
```
**Query**: Filter parameters
**Returns**: Big orders

#### Create Big Order
```
POST /admin/shop/order
```
**Body**: Order details
**Returns**: New big order

#### Get Big Order
```
GET /admin/shop/order/:bigOrderId
```
**Returns**: Order details

#### Get Scan Requests for Order
```
GET /admin/shop/order/:bigOrderId/scan_requests
```
**Returns**: Scan requests

#### Get Shipping Summary
```
GET /admin/shop/order/:bigOrderId/shipping_summary
```
**Returns**: Shipping summary

#### Get Shipments
```
GET /admin/shop/order/:bigOrderId/shipments
```
**Returns**: Order shipments

#### Get Orders for Account
```
GET /admin/shop/account/:bigscreenAccountId/orders
```
**Returns**: Account orders

#### Run Order Checklist
```
GET /admin/shop/order/:bigOrderId/checklist
```
**Returns**: Checklist results

#### Sync Line Items
```
GET /admin/shop/order/:bigOrderId/sync_line_items
```
**Returns**: Sync result

#### Sync with Shopify
```
GET /admin/shop/order/:bigOrderId/sync
```
**Returns**: Sync result

#### Get Big Orders Report
```
GET /admin/shop/orders/report
```
**Returns**: Orders report

#### Get Big Orders Report (v2)
```
GET /admin/shop/orders/report2
```
**Returns**: Orders report v2

#### Run Checklist for All Orders
```
GET /admin/shop/orders/checklist
```
**Returns**: Checklist results

#### Update Big Order
```
PUT /admin/shop/order/:bigOrderId
```
**Body**: Order updates
**Returns**: Updated order

#### Delete Big Order
```
DELETE /admin/shop/order/:bigOrderId
```
**Returns**: Deletion confirmation

#### Get Order Data
```
GET /admin/shop/orders/data
```
**Returns**: Order data export

#### Sync Unconverted Orders (Worker)
```
GET /admin/shop/orders/sync
```
**Returns**: Worker result

#### Sync Orders with Update Records (v2)
```
GET /admin/shop/orders/sync2
```
**Returns**: Worker result

#### Sync Orders (v3)
```
GET /admin/shop/orders/sync3
```
**Returns**: Worker result

#### Repair Shipment Groups (Worker)
```
GET /admin/shop/orders/sync_all_big_orders
```
**Returns**: Worker result

#### Install Shopify Webhooks
```
POST /admin/shop/webhooks/install
```
**Returns**: Installation result

#### Uninstall Webhooks
```
POST /admin/shop/webhooks/uninstall
```
**Returns**: Uninstallation result

#### Get Webhook Responses
```
GET /admin/shop/webhooks
```
**Returns**: Webhook response log

#### Test Inventory Code
```
POST /admin/shop/test/getBeyondPackageInventoryCode
```
**Body**: Test parameters
**Returns**: Test result

---

### Scan Requests

#### Get Scan Requests
```
GET /admin/fabricator/scan_requests
```
**Query**: Filter parameters
**Returns**: Scan requests

#### Repair Outstanding Requests (Worker)
```
GET /admin/fabricator/scan_requests/repair
```
**Returns**: Worker result

#### Get Account Scan Requests
```
GET /admin/fabricator/account/:bigscreenAccountId/scan_requests
```
**Returns**: Account scan requests

#### Get Scan Request
```
GET /admin/fabricator/scan_request/:scanRequestId
```
**Returns**: Scan request details

#### Update with Topology Scan
```
GET /admin/fabricator/scan_request/:scanRequestId/topology
GET /admin/fabricator/scan_request/:scanRequestId/topology/:topologyPatientIdOverride
```
**Returns**: Updated scan request

#### Update Scan Request
```
PUT /admin/fabricator/scan_request/:scanRequestId
```
**Body**: Request updates
**Returns**: Updated request

#### Download Scan File
```
GET /admin/fabricator/scan_request/:scanRequestId/scan
```
**Returns**: Scan file download

#### Verify Scan
```
GET /admin/fabricator/scan_request/:scanRequestId/verify
```
**Returns**: Verification result

#### Get Mesh
```
GET /admin/fabricator/scan_request/:scanRequestId/mesh
```
**Returns**: Mesh file

#### Delete Scan Request
```
DELETE /admin/fabricator/scan_request/:scanRequestId
```
**Returns**: Deletion confirmation

---

### Fabricator Jobs

#### Get Schemas
```
GET /admin/fabricator/schemas
```
**Returns**: Fabricator schemas

#### Get Schemas (v2)
```
GET /admin/fabricator/schemas2
```
**Returns**: Fabricator schemas v2

#### Create Job
```
POST /admin/fabricator/job
```
**Body**: Job details
**Returns**: New job

#### Get Job
```
GET /admin/fabricator/job/:jobId
```
**Returns**: Job details

#### Test Preprocessor (Debug)
```
GET /admin/fabricator/job/:jobId/test_preprocessor
```
**Returns**: Preprocessor test result

#### Get Jobs with Query
```
GET /admin/fabricator/jobs
```
**Query**: Filter parameters
**Returns**: Jobs

#### Get Jobs (Deprecated)
```
POST /admin/fabricator/jobs
```
**Body**: Query parameters
**Returns**: Jobs

#### Update Job
```
PUT /admin/fabricator/job/:jobId
```
**Body**: Job updates
**Returns**: Updated job

#### Delete Job
```
DELETE /admin/fabricator/job/:jobId
```
**Returns**: Deletion confirmation

#### Download Scan
```
GET /admin/fabricator/job/:jobId/scan
```
**Returns**: Scan file

#### Download Mesh
```
GET /admin/fabricator/job/:jobId/mesh
```
**Returns**: Mesh file

#### Start Toolpath (Debug)
```
GET /admin/fabricator/job/:jobId/debug_start_toolpath
```
**Returns**: Toolpath generation result

#### Upload Toolpath (Debug)
```
PUT /admin/fabricator/job/:jobId/debug_upload_toolpath
```
**Body**: Toolpath file
**Returns**: Upload result

#### Revert History (Debug)
```
GET /admin/fabricator/job/:jobId/debug_revert_history
```
**Returns**: Revert result

#### Download Toolpath
```
GET /admin/fabricator/job/:jobId/toolpath
```
**Returns**: Toolpath file

#### Get Extra Info
```
GET /admin/fabricator/job/:jobId/extra
```
**Returns**: Additional job information

#### Run Jobs Checklist
```
GET /admin/fabricator/jobs/checklist
```
**Returns**: Checklist results

#### Get Jobs Report
```
GET /admin/fabricator/jobs/report
```
**Returns**: Jobs report

#### Get Jobs Report (v2)
```
GET /admin/fabricator/jobs/report2
```
**Returns**: Jobs report v2

---

### Product Database

#### Get Internal Product Database
```
GET /admin/shop/products_snapshot
```
**Returns**: Internal product snapshot

#### Get Full Shopify Products
```
GET /admin/shop/products
```
**Returns**: Full Shopify product catalog

#### Get Product
```
GET /admin/fabricator/product/:id
```
**Returns**: Product details

#### Get Product Variant
```
GET /admin/fabricator/variant/:id
```
**Returns**: Product variant details

---

### Inventory Management

#### Get Serial Number Type Hint
```
GET /admin/inventory/hint
```
**Query**: Serial number
**Returns**: Inventory type hint

#### Get Inventory Items
```
GET /admin/inventory/items
```
**Query**: Filter parameters
**Returns**: Inventory items

#### Get Inventory Stats
```
GET /admin/inventory/stats
```
**Returns**: Inventory statistics

#### Create Inventory Item
```
POST /admin/inventory/item
```
**Body**: Item details
**Returns**: New inventory item

#### Get Inventory Item
```
GET /admin/inventory/item/:id
```
**Returns**: Item details

#### Update Inventory Item
```
PUT /admin/inventory/item/:id
```
**Body**: Item updates
**Returns**: Updated item

#### Delete Inventory Item
```
DELETE /admin/inventory/item/:id
```
**Returns**: Deletion confirmation

#### Get Inventory Report
```
GET /admin/inventory/report
```
**Returns**: Inventory report

#### Sync Inventory (Worker)
```
GET /admin/inventory/sync
```
**Returns**: Worker result

---

### Shipping/Big Shipper

#### Find Next Shippable Order
```
GET /admin/shipper/next
```
**Returns**: Next order to ship

#### Find Next Shippable Order (v3)
```
GET /admin/shipper/next3
```
**Returns**: Next order to ship v3

#### Get Shipper Stats
```
GET /admin/shipper/stats
```
**Returns**: Shipping statistics

#### Get Shipments
```
GET /admin/shipper/shipments
```
**Query**: Filter parameters
**Returns**: Shipments

#### Get Shipment
```
GET /admin/shipper/shipment/:id
```
**Returns**: Shipment details

#### Get Shopify Info
```
GET /admin/shipper/shipment/:id/shopify
```
**Returns**: Shopify shipment info

#### Run Checklist
```
GET /admin/shipper/shipment/:id/checklist
```
**Returns**: Checklist results

#### Create Shipment
```
POST /admin/shipper/shipment
```
**Body**: Shipment details
**Returns**: New shipment

#### Update Shipment
```
PUT /admin/shipper/shipment/:id
```
**Body**: Shipment updates
**Returns**: Updated shipment

#### Delete Shipment
```
DELETE /admin/shipper/shipment/:id
```
**Returns**: Deletion confirmation

#### Sync Shipping (Worker)
```
GET /admin/shipper/sync
```
**Returns**: Worker result

---

### CNC Machine Endpoints

**Auth**: CNC machine access token

#### Check CNC Connection
```
GET /cnc
```
**Returns**: Connection status

#### Get Next Manufacturing
```
PUT /cnc/next
```
**Returns**: Next toolpath to manufacture

#### Get Toolpath State
```
GET /cnc/:toolPathId
```
**Returns**: Toolpath state

#### Update Toolpath
```
PUT /cnc/:toolPathId
```
**Body**: State updates
**Returns**: Updated toolpath

---

### Fusion API Endpoints

**Auth**: Fusion API key (network restricted)

#### Check Fusion Authentication
```
GET /fusion/whoami
```
**Returns**: Authentication status

#### Get Next Scan for Toolpath
```
GET /fusion/next
```
**Returns**: Next scan to process

#### Upload Toolpath
```
PUT /fusion/:toolPathId
```
**Body**: Toolpath file
**Returns**: Upload result

---

### Pose API Endpoints

**Auth**: Pose access token (rate limited)

#### Check Pose Authentication
```
GET /pose/whoami
```
**Returns**: Authentication status

#### Get Schemas
```
GET /pose/schemas
```
**Returns**: Pose schemas

#### Get Job
```
GET /pose/job/:jobId
```
**Returns**: Job details

#### Get Jobs
```
GET /pose/jobs
```
**Query**: Filter parameters
**Returns**: Jobs

#### Update Job
```
PUT /pose/job/:jobId
```
**Body**: Job updates
**Returns**: Updated job

#### Download Scan (Strict Rate Limit)
```
GET /pose/job/:jobId/scan
```
**Returns**: Scan file

#### Download Mesh
```
GET /pose/job/:jobId/mesh
```
**Returns**: Mesh file

#### Start Toolpath
```
GET /pose/job/:jobId/debug_start_toolpath
```
**Returns**: Toolpath generation result

#### Upload Toolpath
```
PUT /pose/job/:jobId/debug_upload_toolpath
```
**Body**: Toolpath file
**Returns**: Upload result

#### Download Toolpath
```
GET /pose/job/:jobId/toolpath
```
**Returns**: Toolpath file

---

## Source Code

- **Main server**: `apps/admin_api/admin_api.ts`
- **Database setup**: `apps/admin_api/db_setup.ts`
- **Tests**: `tests/fabricator/`

## Related Documentation

- [API Overview](API_OVERVIEW.md)
- [Auth API](AUTH_API.md)
- [Cloud API](CLOUD_API.md)
