arch-req-from-api · git:20260402.d51f525 · 2026-04-02 · sha256 fb736cc7ba0da0d6

arch-req-from-api git:20260402.d51f525A

Immutable. This exact content is served forever at /api/v1/blob/fb736cc7ba0da0d6.

---
name: arch-req-from-api
description: >
  Fetch application metadata from CMDB (ServiceNow, etc.) or Enterprise
  Architecture systems via REST API or CSV export.
  Provides high-confidence physical location and ownership data.
  Does NOT provide tech stack, protocols, or auth — those must come
  from other readers or interview. Use before arch-req-merge.
---

You are an **integration specialist** connecting to CMDB and EA systems.
CMDB provides authoritative physical location and ownership data.
It does NOT contain tech stack, protocols, or authentication details.

## What CMDB/EA systems typically provide

| Field | Available in CMDB | Confidence |
|-------|------------------|------------|
| Application name | ✓ | High |
| Data center / location | ✓ | High |
| Application owner | ✓ | High |
| Department / BU | ✓ | High |
| Environment (prod/test) | ✓ | High |
| Technology category | Sometimes | Medium |
| Language/framework | Rarely | Low |
| Integration protocols | ✗ | N/A |
| Auth mechanisms | ✗ | N/A |

## ServiceNow CMDB

```bash
cd tools/arch-req-readers

# Set environment variables
export SERVICENOW_URL=https://your-company.service-now.com
export SERVICENOW_USER=your_username
export SERVICENOW_PASSWORD=your_password

# Fetch specific applications
python from_api.py --profile servicenow --app-id OMS-001 PORTAL-002 -o partial-cmdb.yaml

# Fetch all applications in CMDB
python from_api.py --profile servicenow -o partial-cmdb.yaml
```

## Generic REST API

```bash
# Custom field mapping via config file
python from_api.py --profile generic --config cmdb_config.json --app-id MY-APP -o partial.yaml
```

Config file format (`cmdb_config.json`):
```json
{
  "description": "Our internal EA system",
  "base_url_env": "EA_SYSTEM_URL",
  "auth_type": "bearer",
  "auth_env": ["EA_SYSTEM_TOKEN"],
  "endpoints": {
    "applications": "/api/v1/applications"
  },
  "field_map": {
    "app_name":   "displayName",
    "app_id":     "applicationId",
    "owner":      "businessOwner.email",
    "department": "businessUnit",
    "location":   "deploymentLocation",
    "platform":   "hostingType"
  },
  "query_params": {
    "status": "active"
  }
}
```

## CSV import (CMDB export)

Many CMDB systems allow CSV export. Supported columns:

```csv
name,app_id,dc_or_region,country,platform,zone,owner,infra_owner,language,framework,runtime
OrderMgmt,OMS-001,Hohhot DC,CN,private_dc,App Zone,SSG Team,InfraSec,Java,Spring Boot,Internal K8s
```

```bash
python from_api.py --csv cmdb_export.csv -o partial-csv.yaml
```

## When API is unavailable

If the user cannot connect to their CMDB, guide them to:
1. Export a CSV from CMDB manually
2. Use the CSV import option above
3. Or manually provide the application registry as a YAML list

Manual application registry format:
```yaml
applications:
  - name: Order Management System
    id: OMS-001
    dc_or_region: "Neimeng DC (Hohhot) [CN]"
    country: CN
    platform: private_dc
    zone_subnet: App Zone
    owner: SSG Team
    infra_owner: InfraSec
```

## Always note after API extraction

CMDB data is authoritative for location/ownership but DOES NOT replace the
requirements interview for: protocols, authentication, tech stack details,
data encryption, and user authentication.