{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://puranwater.com/schemas/index.json","title":"PuranOS Schema Catalog","description":"Complete schema inventory organized by ontology layer.","layers":{"enterprise_oss":{"description":"Schemas inherited from forked/customized open-source systems. Not generated — refer to native API docs.","systems":{"atlas_cmms":{"description":"Computerized Maintenance Management System (forked, Java/Spring)","interop_extensions":["equipment_uid (UUID)","project_ref","failure_mode/cause/mechanism (ISO 14224)","inventree_part_id","criticality (PartCriticality)","severity (MeterTriggerSeverity)"],"api_base":"/api/v1"},"openproject":{"description":"Project management and workflow (v17, customized)","custom_types":{"8":"RFI","9":"Submittal","10":"Change Order","11":"Procurement","12":"Inspection","13":"Punch List","14":"NCR","15":"Commissioning","16":"MOC","17":"Transmittal","18":"Warranty"},"custom_fields":{"7":"RFI Number","8":"Response Due Date","9":"Ball In Court","10":"Spec Section","17":"Revision","19":"Discipline","31":"Equipment Tag","32":"NCR Severity","33":"NCR Disposition","34":"Root Cause Category","35":"Corrective Action","36":"Commissioning Phase","37":"Punch Category","38":"Loop Reference","39":"Test Result","40":"Change Category","41":"Risk Level","42":"MOC Phase","43":"Revert By Date","44":"equipment_uid","45":"response_status","46":"submittal_number","47":"review_status","48":"transmittal_number","49":"transmittal_purpose","50":"recipient","51":"acknowledged_date","52":"warranty_start","53":"warranty_end","54":"claim_status","55":"vendor_response_date","56":"resolution","57":"failure_mode","58":"failure_cause","59":"failure_mechanism","60":"cmms_work_order_id","61":"alarm_uid","20-30":"Agent state fields (20-30)"},"api_base":"/api/v3"},"inventree":{"description":"Parts, inventory, BOMs, purchase orders (upstream)","key_entities":["Part","StockItem","PurchaseOrder","BOM","TestResult","Company"],"api_docs":"https://docs.inventree.org/en/stable/api/schema/"}}},"engineering_contracts":{"description":"Purpose-built schemas aligned to industry standards (ISA, IEC, QUDT, ISO 14224, EPA WQX). Pydantic models are the interchange contracts; Postgres tables are the storage contracts.","pydantic_schemas":["alarm-definition.schema.json","capex-improvement-request.schema.json","cause-effect-matrix.schema.json","claim-event.schema.json","commissioning-handover-package.schema.json","compliance-status-exchange.schema.json","contract.schema.json","control-execution-package.schema.json","design-performance-baseline.schema.json","engineering-unit.schema.json","equipment-item.schema.json","hazop-study-package.schema.json","hydraulic-profile.schema.json","instrument-database.schema.json","maintenance-history-exchange.schema.json","model-credibility.schema.json","obligation-fulfillment-package.schema.json","operations-runtime-package.schema.json","process-performance-summary.schema.json","proforma-actuals-record.schema.json","proforma-model-run.schema.json","project-controls-package.schema.json","project.schema.json","quality-test-package.schema.json","reliability-kpi-snapshot.schema.json","stream-state.schema.json"],"postgres_schemas":{"count":85,"generator":"libs/engineering-utils/scripts/generate_postgres_schemas.py","databases":{"compliance_mcp":{"table_count":12,"tables":[{"name":"analytical_method","url":"https://puranwater.com/schemas/postgres/compliance_mcp/analytical_method.schema.json"},{"name":"custody_transfer","url":"https://puranwater.com/schemas/postgres/compliance_mcp/custody_transfer.schema.json"},{"name":"project","url":"https://puranwater.com/schemas/postgres/compliance_mcp/project.schema.json"},{"name":"qa_qc_observation","url":"https://puranwater.com/schemas/postgres/compliance_mcp/qa_qc_observation.schema.json"},{"name":"sample_event","url":"https://puranwater.com/schemas/postgres/compliance_mcp/sample_event.schema.json"}]},"engineering_mcp":{"table_count":42,"tables":[{"name":"alarm_definition","url":"https://puranwater.com/schemas/postgres/engineering_mcp/alarm_definition.schema.json"},{"name":"alarm_event","url":"https://puranwater.com/schemas/postgres/engineering_mcp/alarm_event.schema.json"},{"name":"artifact_type_registry","url":"https://puranwater.com/schemas/postgres/engineering_mcp/artifact_type_registry.schema.json"},{"name":"chemical_dose_run","url":"https://puranwater.com/schemas/postgres/engineering_mcp/chemical_dose_run.schema.json"},{"name":"component_metadata","url":"https://puranwater.com/schemas/postgres/engineering_mcp/component_metadata.schema.json"},{"name":"control_loop_definition","url":"https://puranwater.com/schemas/postgres/engineering_mcp/control_loop_definition.schema.json"},{"name":"control_performance_snapshot","url":"https://puranwater.com/schemas/postgres/engineering_mcp/control_performance_snapshot.schema.json"},{"name":"control_sequence_definition","url":"https://puranwater.com/schemas/postgres/engineering_mcp/control_sequence_definition.schema.json"},{"name":"control_sequence_step","url":"https://puranwater.com/schemas/postgres/engineering_mcp/control_sequence_step.schema.json"},{"name":"design_baseline_guarantee","url":"https://puranwater.com/schemas/postgres/engineering_mcp/design_baseline_guarantee.schema.json"},{"name":"design_performance_baseline","url":"https://puranwater.com/schemas/postgres/engineering_mcp/design_performance_baseline.schema.json"},{"name":"engineering_artifact","url":"https://puranwater.com/schemas/postgres/engineering_mcp/engineering_artifact.schema.json"},{"name":"failure_event","url":"https://puranwater.com/schemas/postgres/engineering_mcp/failure_event.schema.json"},{"name":"guarantee_comparison","url":"https://puranwater.com/schemas/postgres/engineering_mcp/guarantee_comparison.schema.json"},{"name":"hazop_action","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_action.schema.json"},{"name":"hazop_cause","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_cause.schema.json"},{"name":"hazop_consequence","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_consequence.schema.json"},{"name":"hazop_deviation","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_deviation.schema.json"},{"name":"hazop_node","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_node.schema.json"},{"name":"hazop_participant","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_participant.schema.json"},{"name":"hazop_safeguard","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_safeguard.schema.json"},{"name":"hazop_study","url":"https://puranwater.com/schemas/postgres/engineering_mcp/hazop_study.schema.json"},{"name":"interlock_action","url":"https://puranwater.com/schemas/postgres/engineering_mcp/interlock_action.schema.json"},{"name":"interlock_condition","url":"https://puranwater.com/schemas/postgres/engineering_mcp/interlock_condition.schema.json"},{"name":"interlock_definition","url":"https://puranwater.com/schemas/postgres/engineering_mcp/interlock_definition.schema.json"},{"name":"layouts","url":"https://puranwater.com/schemas/postgres/engineering_mcp/layouts.schema.json"},{"name":"lopa_ipl","url":"https://puranwater.com/schemas/postgres/engineering_mcp/lopa_ipl.schema.json"},{"name":"lopa_scenario","url":"https://puranwater.com/schemas/postgres/engineering_mcp/lopa_scenario.schema.json"},{"name":"model_snapshots","url":"https://puranwater.com/schemas/postgres/engineering_mcp/model_snapshots.schema.json"},{"name":"models","url":"https://puranwater.com/schemas/postgres/engineering_mcp/models.schema.json"},{"name":"operator_round","url":"https://puranwater.com/schemas/postgres/engineering_mcp/operator_round.schema.json"},{"name":"plc_program_unit","url":"https://puranwater.com/schemas/postgres/engineering_mcp/plc_program_unit.schema.json"},{"name":"plc_task_binding","url":"https://puranwater.com/schemas/postgres/engineering_mcp/plc_task_binding.schema.json"},{"name":"process_segment_definition","url":"https://puranwater.com/schemas/postgres/engineering_mcp/process_segment_definition.schema.json"},{"name":"project","url":"https://puranwater.com/schemas/postgres/engineering_mcp/project.schema.json"},{"name":"reliability_kpi_snapshot","url":"https://puranwater.com/schemas/postgres/engineering_mcp/reliability_kpi_snapshot.schema.json"},{"name":"round_checkpoint","url":"https://puranwater.com/schemas/postgres/engineering_mcp/round_checkpoint.schema.json"},{"name":"shift_log","url":"https://puranwater.com/schemas/postgres/engineering_mcp/shift_log.schema.json"},{"name":"shift_log_entry","url":"https://puranwater.com/schemas/postgres/engineering_mcp/shift_log_entry.schema.json"},{"name":"spare_consumption","url":"https://puranwater.com/schemas/postgres/engineering_mcp/spare_consumption.schema.json"},{"name":"stream_snapshot","url":"https://puranwater.com/schemas/postgres/engineering_mcp/stream_snapshot.schema.json"},{"name":"vendor_guarantee","url":"https://puranwater.com/schemas/postgres/engineering_mcp/vendor_guarantee.schema.json"}]},"equipment_identity":{"table_count":6,"tables":[{"name":"asset_instance","url":"https://puranwater.com/schemas/postgres/equipment_identity/asset_instance.schema.json"},{"name":"designator","url":"https://puranwater.com/schemas/postgres/equipment_identity/designator.schema.json"},{"name":"equipment_position","url":"https://puranwater.com/schemas/postgres/equipment_identity/equipment_position.schema.json"},{"name":"part_applicability","url":"https://puranwater.com/schemas/postgres/equipment_identity/part_applicability.schema.json"},{"name":"project","url":"https://puranwater.com/schemas/postgres/equipment_identity/project.schema.json"},{"name":"tag_history","url":"https://puranwater.com/schemas/postgres/equipment_identity/tag_history.schema.json"}]},"procurement":{"table_count":25,"tables":[{"name":"calibration_factor","url":"https://puranwater.com/schemas/postgres/procurement/calibration_factor.schema.json"},{"name":"cash_flow_forecast_period","url":"https://puranwater.com/schemas/postgres/procurement/cash_flow_forecast_period.schema.json"},{"name":"cepci_index","url":"https://puranwater.com/schemas/postgres/procurement/cepci_index.schema.json"},{"name":"change_order","url":"https://puranwater.com/schemas/postgres/procurement/change_order.schema.json"},{"name":"contingency_drawdown","url":"https://puranwater.com/schemas/postgres/procurement/contingency_drawdown.schema.json"},{"name":"cost_observation","url":"https://puranwater.com/schemas/postgres/procurement/cost_observation.schema.json"},{"name":"cost_to_complete_projection","url":"https://puranwater.com/schemas/postgres/procurement/cost_to_complete_projection.schema.json"},{"name":"datasheet_revision","url":"https://puranwater.com/schemas/postgres/procurement/datasheet_revision.schema.json"},{"name":"datasheet_schema_extension","url":"https://puranwater.com/schemas/postgres/procurement/datasheet_schema_extension.schema.json"},{"name":"designator","url":"https://puranwater.com/schemas/postgres/procurement/designator.schema.json"},{"name":"designator_model_crosswalk","url":"https://puranwater.com/schemas/postgres/procurement/designator_model_crosswalk.schema.json"},{"name":"earned_value_snapshot","url":"https://puranwater.com/schemas/postgres/procurement/earned_value_snapshot.schema.json"},{"name":"equipment_category","url":"https://puranwater.com/schemas/postgres/procurement/equipment_category.schema.json"},{"name":"equipment_spec","url":"https://puranwater.com/schemas/postgres/procurement/equipment_spec.schema.json"},{"name":"estimate_line","url":"https://puranwater.com/schemas/postgres/procurement/estimate_line.schema.json"},{"name":"goods_receipt","url":"https://puranwater.com/schemas/postgres/procurement/goods_receipt.schema.json"},{"name":"payment_certificate","url":"https://puranwater.com/schemas/postgres/procurement/payment_certificate.schema.json"},{"name":"process_datasheet","url":"https://puranwater.com/schemas/postgres/procurement/process_datasheet.schema.json"},{"name":"project","url":"https://puranwater.com/schemas/postgres/procurement/project.schema.json"},{"name":"project_control_baseline","url":"https://puranwater.com/schemas/postgres/procurement/project_control_baseline.schema.json"},{"name":"project_estimate","url":"https://puranwater.com/schemas/postgres/procurement/project_estimate.schema.json"},{"name":"purchase_order","url":"https://puranwater.com/schemas/postgres/procurement/purchase_order.schema.json"},{"name":"vendor","url":"https://puranwater.com/schemas/postgres/procurement/vendor.schema.json"},{"name":"vendor_invoice","url":"https://puranwater.com/schemas/postgres/procurement/vendor_invoice.schema.json"},{"name":"vendor_quote","url":"https://puranwater.com/schemas/postgres/procurement/vendor_quote.schema.json"}]}}},"pydantic_schema_count":26,"postgres_table_count":111,"postgres_databases":{"compliance_mcp":{"count":18,"tables":["analytical_method","assessed_value","compliance_point","compliance_submission","custody_transfer","deadline","document_attachment","nonconformance","obligation_instrument","obligation_requirement","observation","parameter_registry","project","qa_qc_observation","quantitative_limit","sample_event","schedule_rule","submission_item"]},"contractor_management":{"count":7,"tables":["change_order_detail","claim_event","contract","document_attachment","pay_app_line","pay_application","sov_line"]},"engineering_mcp":{"count":44,"tables":["alarm_definition","alarm_event","artifact_type_registry","chemical_dose_run","component_metadata","control_loop_definition","control_performance_snapshot","control_sequence_definition","control_sequence_step","design_baseline_guarantee","design_performance_baseline","document_attachment","engineering_artifact","failure_event","guarantee_comparison","hazop_action","hazop_cause","hazop_consequence","hazop_deviation","hazop_node","hazop_participant","hazop_safeguard","hazop_study","interlock_action","interlock_condition","interlock_definition","layouts","lopa_ipl","lopa_scenario","model_snapshots","models","operator_round","plc_program_unit","plc_task_binding","process_segment_definition","project","quality_test_measurement","quality_test_record","reliability_kpi_snapshot","round_checkpoint","shift_log","shift_log_entry","spare_consumption","stream_snapshot"]},"equipment_identity":{"count":6,"tables":["asset_instance","designator","equipment_position","part_applicability","project","tag_history"]},"procurement":{"count":27,"tables":["calibration_factor","cepci_index","control_valve_spec","cost_observation","datasheet_field_definition","datasheet_revision","datasheet_template","datasheet_value_index","decision_trace","designator","designator_model_crosswalk","document_attachment","equipment_category","equipment_spec","estimate_line","goods_receipt","instrument_spec","process_datasheet","project","project_estimate","purchase_order","relief_device_spec","trace_step","vendor","vendor_guarantee","vendor_invoice","vendor_quote"]},"project_controls":{"count":5,"tables":["cash_flow_forecast_period","contingency_drawdown","cost_to_complete_projection","earned_value_snapshot","project_control_baseline"]},"project_finance":{"count":4,"tables":["document_attachment","proforma_actuals_import","proforma_actuals_record","proforma_model_run"]}}},"reference_data":{"description":"Shared vocabularies, taxonomies, and unit systems.","schemas":[{"name":"engineering-unit","url":"https://puranwater.com/schemas/engineering-unit.schema.json","description":"57 constrained unit codes (QUDT/UN-CEFACT Rec 20) with UCUM code mapping"},{"name":"process-unit-taxonomy","url":"https://puranwater.com/schemas/process-unit-taxonomy.schema.json","description":"109 wastewater process unit types with ISA area codes, subarea numbers, and equipment type codes"},{"name":"iso14224-failure-taxonomy","url":"https://puranwater.com/schemas/iso14224-failure-taxonomy.schema.json","description":"ISO 14224 failure modes, causes, mechanisms, and equipment classes for reliability tracking"}]}}}