# File Organization

This document describes the organization of files in the ONVIF Go library project.

## Directory Structure

```
onvif-go/
├── docs/                          # Documentation
│   ├── api/                      # API documentation
│   │   ├── DEVICE_API_STATUS.md
│   │   ├── DEVICE_API_QUICKREF.md
│   │   ├── CERTIFICATE_WIFI_SUMMARY.md
│   │   ├── STORAGE_API_SUMMARY.md
│   │   └── ADDITIONAL_APIS_SUMMARY.md
│   ├── implementation/            # Implementation details
│   │   ├── IMPLEMENTATION_COMPLETE.md
│   │   ├── IMPLEMENTATION_STATUS.md
│   │   ├── MEDIA_WSDL_OPERATIONS_ANALYSIS.md
│   │   └── MEDIA_OPERATIONS_ANALYSIS.md
│   ├── testing/                  # Testing documentation
│   │   ├── COMPREHENSIVE_TEST_SUMMARY.md
│   │   ├── CAMERA_TEST_REPORT.md
│   │   ├── CAMERA_TESTING_FLOW.md
│   │   ├── DEVICE_API_TEST_COVERAGE.md
│   │   └── COVERAGE_SETUP.md
│   ├── README.md                 # Documentation index
│   ├── ARCHITECTURE.md
│   ├── PROJECT_SUMMARY.md
│   ├── PROJECT_STRUCTURE.md
│   └── ... (other docs)
│
├── test-reports/                  # Test reports (JSON)
│   ├── README.md
│   └── camera_test_report_*.json
│
├── examples/                      # Example programs
│   ├── test-real-camera-all/     # Comprehensive camera testing
│   ├── device-info/
│   ├── discovery/
│   └── ... (other examples)
│
├── testdata/                      # Test data
│   └── captures/                  # Captured SOAP responses
│
├── cmd/                           # Command-line tools
│   ├── onvif-cli/
│   ├── onvif-diagnostics/
│   └── ...
│
├── server/                        # ONVIF server implementation
│
├── discovery/                     # Discovery functionality
│
├── internal/                      # Internal packages
│   └── soap/                     # SOAP client
│
├── testing/                       # Testing utilities
│
├── *.go                           # Core library files
├── *_test.go                      # Test files
├── README.md                      # Main README
├── CHANGELOG.md                   # Version history
├── CONTRIBUTING.md                # Contribution guidelines
├── BUILDING.md                    # Build instructions
└── LICENSE                        # License file
```

## File Categories

### Root Directory
- **Core library files** (`*.go`) - Main implementation files
- **Test files** (`*_test.go`) - Unit and integration tests
- **Essential documentation** - README.md, CHANGELOG.md, CONTRIBUTING.md, BUILDING.md, LICENSE

### Documentation (`docs/`)
- **API Documentation** (`docs/api/`) - API reference and status documents
- **Implementation Details** (`docs/implementation/`) - Implementation analysis and status
- **Testing Documentation** (`docs/testing/`) - Test reports and coverage information
- **General Documentation** (`docs/`) - Architecture, guides, and other documentation

### Test Reports (`test-reports/`)
- JSON files containing test results from real camera testing
- Automatically generated by `examples/test-real-camera-all/main.go`
- Named with pattern: `camera_test_report_{Manufacturer}_{Model}_{Timestamp}.json`

### Examples (`examples/`)
- Example programs demonstrating library usage
- Organized by functionality (discovery, device-info, PTZ, etc.)

### Test Data (`testdata/`)
- Captured SOAP responses from real cameras
- Used for unit testing without camera connectivity

## File Naming Conventions

### Documentation Files
- **UPPERCASE_WITH_UNDERSCORES.md** - Main documentation files
- **README.md** - Directory indexes

### Test Files
- **{module}_test.go** - Standard Go test files
- **{module}_real_camera_test.go** - Tests using real camera data

### Report Files
- **camera_test_report_{manufacturer}_{model}_{timestamp}.json** - Test reports

## Maintenance

### Adding New Documentation
1. **API Documentation** → `docs/api/`
2. **Implementation Details** → `docs/implementation/`
3. **Testing Documentation** → `docs/testing/`
4. **General Documentation** → `docs/`

### Generating Test Reports
Run `examples/test-real-camera-all/main.go` - reports are automatically saved to `test-reports/`

### Updating Documentation Index
Update `docs/README.md` when adding new documentation files.

---

*Last Updated: December 2, 2025*

