onetrust-api 1.3.3__tar.gz → 1.3.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. {onetrust_api-1.3.3/onetrust_api.egg-info → onetrust_api-1.3.4}/PKG-INFO +4 -4
  2. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/README.md +1 -1
  3. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/__init__.py +18 -0
  4. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/connector_sources.py +0 -20
  5. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp_server.py +10 -12
  6. {onetrust_api-1.3.3 → onetrust_api-1.3.4/onetrust_api.egg-info}/PKG-INFO +4 -4
  7. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api.egg-info/SOURCES.txt +1 -0
  8. onetrust_api-1.3.4/onetrust_api.egg-info/entry_points.txt +8 -0
  9. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api.egg-info/requires.txt +2 -2
  10. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/pyproject.toml +4 -10
  11. onetrust_api-1.3.4/tests/test_default_content_surfaces.py +248 -0
  12. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_fleet_name.py +1 -1
  13. onetrust_api-1.3.4/tests/test_publication_workflow.py +81 -0
  14. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_startup.py +0 -2
  15. onetrust_api-1.3.3/onetrust_api.egg-info/entry_points.txt +0 -14
  16. onetrust_api-1.3.3/tests/test_default_content_surfaces.py +0 -43
  17. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/LICENSE +0 -0
  18. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/MANIFEST.in +0 -0
  19. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/__main__.py +0 -0
  20. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/__init__.py +0 -0
  21. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/_operation_manifest.py +0 -0
  22. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_access_management.py +0 -0
  23. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_ai_governance.py +0 -0
  24. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_assessments.py +0 -0
  25. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_audit_management.py +0 -0
  26. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_base.py +0 -0
  27. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_bulk_export.py +0 -0
  28. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_cmp.py +0 -0
  29. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_compliance_automation.py +0 -0
  30. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_consent_interfaces.py +0 -0
  31. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_consent_receipts.py +0 -0
  32. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_cookie_consent.py +0 -0
  33. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_cookie_consent_legacy.py +0 -0
  34. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_cookie_domain_data.py +0 -0
  35. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_cross_device_consent.py +0 -0
  36. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_data_catalog.py +0 -0
  37. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_data_discovery.py +0 -0
  38. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_data_discovery_worker.py +0 -0
  39. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_data_mapping.py +0 -0
  40. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_data_mapping_legacy.py +0 -0
  41. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_documents.py +0 -0
  42. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_dsar.py +0 -0
  43. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_esg.py +0 -0
  44. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_incidents.py +0 -0
  45. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_integrations.py +0 -0
  46. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_inventory.py +0 -0
  47. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_issues_management.py +0 -0
  48. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_it_risk_management.py +0 -0
  49. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_mobile_app_consent.py +0 -0
  50. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_object_manager.py +0 -0
  51. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_policy_management.py +0 -0
  52. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_privacy_notices.py +0 -0
  53. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_task_management.py +0 -0
  54. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_tprm.py +0 -0
  55. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_training.py +0 -0
  56. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_universal_consent.py +0 -0
  57. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api/api_client_user_provisioning.py +0 -0
  58. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/api_client.py +0 -0
  59. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/auth.py +0 -0
  60. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/connectors/__init__.py +0 -0
  61. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/kg_ingest.py +0 -0
  62. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/__init__.py +0 -0
  63. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_access_management.py +0 -0
  64. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_ai_governance.py +0 -0
  65. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_assessments.py +0 -0
  66. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_audit_management.py +0 -0
  67. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_bulk_export.py +0 -0
  68. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_cmp.py +0 -0
  69. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_compliance_automation.py +0 -0
  70. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_consent_interfaces.py +0 -0
  71. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_consent_receipts.py +0 -0
  72. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_cookie_consent.py +0 -0
  73. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_cookie_consent_legacy.py +0 -0
  74. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_cookie_domain_data.py +0 -0
  75. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_cross_device_consent.py +0 -0
  76. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_custom_api.py +0 -0
  77. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_data_catalog.py +0 -0
  78. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_data_discovery.py +0 -0
  79. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_data_discovery_worker.py +0 -0
  80. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_data_mapping.py +0 -0
  81. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_data_mapping_legacy.py +0 -0
  82. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_documents.py +0 -0
  83. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_dsar.py +0 -0
  84. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_esg.py +0 -0
  85. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_incidents.py +0 -0
  86. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_integrations.py +0 -0
  87. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_inventory.py +0 -0
  88. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_issues_management.py +0 -0
  89. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_it_risk_management.py +0 -0
  90. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_mobile_app_consent.py +0 -0
  91. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_object_manager.py +0 -0
  92. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_policy_management.py +0 -0
  93. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_privacy_notices.py +0 -0
  94. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_task_management.py +0 -0
  95. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_tprm.py +0 -0
  96. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_training.py +0 -0
  97. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_universal_consent.py +0 -0
  98. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/mcp/mcp_user_provisioning.py +0 -0
  99. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/onetrust_models.py +0 -0
  100. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/ontology/__init__.py +0 -0
  101. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/ontology/certification.json +0 -0
  102. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/ontology/fixtures/records.json +0 -0
  103. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/ontology/mappings/source.yaml +0 -0
  104. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/ontology/migrations/manifest.json +0 -0
  105. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/ontology/onetrust.ttl +0 -0
  106. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/ontology/shapes/connector.shacl.ttl +0 -0
  107. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/prompts/__init__.py +0 -0
  108. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/prompts/consent_cookie_specialist.json +0 -0
  109. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/prompts/privacy_governance_specialist.json +0 -0
  110. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/__init__.py +0 -0
  111. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-api-operations/SKILL.md +0 -0
  112. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-api-operations/agents/openai.yaml +0 -0
  113. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-api-operations/references/catalog.md +0 -0
  114. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-cookie-consent/SKILL.md +0 -0
  115. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-cookie-consent/WORKFLOW.md +0 -0
  116. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-data-mapping/SKILL.md +0 -0
  117. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-data-mapping/WORKFLOW.md +0 -0
  118. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-privacy-assessments/SKILL.md +0 -0
  119. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/skills/onetrust-privacy-assessments/WORKFLOW.md +0 -0
  120. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/ai-governance.json +0 -0
  121. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-consent-interfaces.json +0 -0
  122. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-consent-management-platform-cmp.json +0 -0
  123. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-consent-receipts.json +0 -0
  124. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-cookie-consent-swagger.json +0 -0
  125. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-cookie-consent.json +0 -0
  126. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-cookie-domain-data.json +0 -0
  127. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-cross-device-consent.json +0 -0
  128. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-mobile-app-consent.json +0 -0
  129. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-policy-notice-management.json +0 -0
  130. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/consent-preferences-universal-consent-preference-management-oas.json +0 -0
  131. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/data-use-governance-data-catalog.json +0 -0
  132. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/data-use-governance-data-discovery-worker-node.json +0 -0
  133. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/data-use-governance-data-discovery.json +0 -0
  134. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/esg-program-reporting-disclosures.json +0 -0
  135. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-access-management.json +0 -0
  136. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-bulk-export.json +0 -0
  137. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-documents.json +0 -0
  138. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-integrations.json +0 -0
  139. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-inventory.json +0 -0
  140. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-object-manager.json +0 -0
  141. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-task-management.json +0 -0
  142. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/platform-user-provisioning.json +0 -0
  143. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/privacy-automation-assessment-automation.json +0 -0
  144. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/privacy-automation-data-mapping-automation-swagger.json +0 -0
  145. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/privacy-automation-data-mapping-automation.json +0 -0
  146. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/privacy-automation-data-subject-request-dsr-automation.json +0 -0
  147. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/privacy-automation-incident-management.json +0 -0
  148. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/tech-risk-compliance-audit-management.json +0 -0
  149. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/tech-risk-compliance-compliance-automation.json +0 -0
  150. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/tech-risk-compliance-enterprise-policy-management.json +0 -0
  151. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/tech-risk-compliance-issues-management.json +0 -0
  152. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/tech-risk-compliance-it-risk-management.json +0 -0
  153. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/tech-risk-compliance-training.json +0 -0
  154. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api/specs/third-party-management-third-party-risk-management.json +0 -0
  155. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api.egg-info/dependency_links.txt +0 -0
  156. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/onetrust_api.egg-info/top_level.txt +0 -0
  157. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/requirements.txt +0 -0
  158. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/scripts/generate_from_openapi.py +0 -0
  159. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/scripts/security_sanitizer.py +0 -0
  160. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/setup.cfg +0 -0
  161. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/__init__.py +0 -0
  162. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/conftest.py +0 -0
  163. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_api_client_base.py +0 -0
  164. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_auth.py +0 -0
  165. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_cxa_fl_onetrustapi_01_characterization.py +0 -0
  166. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_generate_from_openapi.py +0 -0
  167. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_kg_ingest.py +0 -0
  168. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_mcp_server.py +0 -0
  169. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_onetrust_api_brute_force_coverage.py +0 -0
  170. {onetrust_api-1.3.3 → onetrust_api-1.3.4}/tests/test_onetrust_coverage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetrust-api
3
- Version: 1.3.3
3
+ Version: 1.3.4
4
4
  Summary: OneTrust API + MCP Server + A2A Agent — 100% API coverage
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,11 +12,11 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
15
+ Requires-Dist: scion-sdk[mcp]<1.0.0,>=0.5.6
16
16
  Requires-Dist: python-dotenv>=1.2.4
17
17
  Requires-Dist: requests>=2.34.2
18
18
  Provides-Extra: mcp
19
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
19
+ Requires-Dist: scion-sdk[mcp]<1.0.0,>=0.5.6; extra == "mcp"
20
20
  Provides-Extra: all
21
21
  Requires-Dist: onetrust-api[mcp]>=1.3.0; extra == "all"
22
22
  Provides-Extra: test
@@ -49,7 +49,7 @@ Dynamic: license-file
49
49
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/onetrust-api)
50
50
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/onetrust-api)
51
51
 
52
- *Version: 1.3.3*
52
+ *Version: 1.3.4*
53
53
 
54
54
  ## Overview
55
55
 
@@ -21,7 +21,7 @@
21
21
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/onetrust-api)
22
22
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/onetrust-api)
23
23
 
24
- *Version: 1.3.3*
24
+ *Version: 1.3.4*
25
25
 
26
26
  ## Overview
27
27
 
@@ -58,3 +58,21 @@ onetrust-api
58
58
 
59
59
  Python OneTrust API client + MCP server + A2A agent with 100% API coverage
60
60
  """
61
+
62
+
63
+ from agent_connector_sdk.connector import Connector
64
+ from agent_connector_sdk.connector_hooks import RegistrationContext
65
+
66
+
67
+ def _register_legacy_surface(context: RegistrationContext) -> None:
68
+ from onetrust_api.mcp_server import register_server_surface
69
+
70
+ vars(context.server)["_onetrust_registered_tags"] = register_server_surface(
71
+ context.server
72
+ )
73
+
74
+
75
+ connector = Connector(
76
+ instructions="OneTrust Api MCP Server",
77
+ extra_registrations=(_register_legacy_surface,),
78
+ )
@@ -7,7 +7,6 @@ Served live as ``connector://resources``. Regenerate by editing the declarations
7
7
  from __future__ import annotations
8
8
 
9
9
  from agent_connector_sdk.ingest.live_declaration import source_meta
10
- from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
11
10
 
12
11
  CONNECTOR = "onetrust-mcp"
13
12
 
@@ -233,22 +232,3 @@ RESOURCES = (
233
232
  "name": "Inventory",
234
233
  },
235
234
  )
236
-
237
-
238
- def declaration() -> IngestSourceDeclaration:
239
- """The declaration the server assembles from this module."""
240
- specs = []
241
- for item in SOURCES:
242
- for entry in item["connector_sources"]:
243
- body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
244
- specs.append(
245
- IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
246
- )
247
- return IngestSourceDeclaration.model_validate(
248
- {
249
- "connector": CONNECTOR,
250
- "sources": specs,
251
- "schema_mappings": SCHEMA_MAPPINGS,
252
- "resources": RESOURCES,
253
- }
254
- )
@@ -5,7 +5,8 @@ import sys
5
5
  from typing import Any
6
6
 
7
7
  from agent_connector_sdk.config import load_config
8
- from agent_connector_sdk.mcp.server import create_mcp_server
8
+ from agent_connector_sdk.connector import build_server
9
+ from agent_connector_sdk.connector_identity import connector_version
9
10
  from agent_connector_sdk.mcp.tool_surface import register_tool_surface
10
11
  from fastmcp import FastMCP
11
12
  from fastmcp.utilities.logging import get_logger
@@ -14,7 +15,7 @@ from onetrust_api.api._operation_manifest import OPERATIONS
14
15
  from onetrust_api.api_client import Api
15
16
  from onetrust_api.auth import get_client
16
17
 
17
- __version__ = "1.3.3"
18
+ __version__ = connector_version("onetrust_api")
18
19
 
19
20
  # Redirect logging to stderr to prevent MCP stdout corruption
20
21
  logger = get_logger(name="onetrust_mcp")
@@ -122,16 +123,16 @@ def register_ingest_tools(mcp: FastMCP):
122
123
  return {"listed": len(records), "ingested": nodes}
123
124
 
124
125
 
125
- def get_mcp_instance() -> tuple[Any, Any, Any, Any]:
126
+ def get_mcp_instance(*, command_args=None) -> tuple[Any, Any, Any, Any]:
126
127
  """Initialize and return the OneTrust Api MCP instance, args, and middlewares."""
127
128
  load_config()
128
129
 
129
- args, mcp, middlewares = create_mcp_server(
130
- name="OneTrust Api MCP",
131
- version=__version__,
132
- instructions="OneTrust Api MCP Server",
133
- )
130
+ args, mcp = build_server("onetrust_api", command_args=command_args)
131
+ return mcp, args, list(mcp.middleware), vars(mcp)["_onetrust_registered_tags"]
132
+
134
133
 
134
+ def register_server_surface(mcp: FastMCP) -> list[str]:
135
+ """Reuse the manifest-backed surface, prompts and ingest tools in order."""
135
136
  # One central call selects the surface per MCP_TOOL_MODE: condensed gates each
136
137
  # generated TOOL_REGISTRY domain via setting("<TAG>TOOL", True); verbose adds
137
138
  # the fully-typed 1:1 tools sourced from the OpenAPI manifest (OPERATIONS).
@@ -149,10 +150,7 @@ def get_mcp_instance() -> tuple[Any, Any, Any, Any]:
149
150
  register_prompts(mcp)
150
151
  register_ingest_tools(mcp)
151
152
 
152
- for mw in middlewares:
153
- mcp.add_middleware(mw)
154
-
155
- return mcp, args, middlewares, registered_tags
153
+ return registered_tags
156
154
 
157
155
 
158
156
  def mcp_server():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onetrust-api
3
- Version: 1.3.3
3
+ Version: 1.3.4
4
4
  Summary: OneTrust API + MCP Server + A2A Agent — 100% API coverage
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,11 +12,11 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
15
+ Requires-Dist: scion-sdk[mcp]<1.0.0,>=0.5.6
16
16
  Requires-Dist: python-dotenv>=1.2.4
17
17
  Requires-Dist: requests>=2.34.2
18
18
  Provides-Extra: mcp
19
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
19
+ Requires-Dist: scion-sdk[mcp]<1.0.0,>=0.5.6; extra == "mcp"
20
20
  Provides-Extra: all
21
21
  Requires-Dist: onetrust-api[mcp]>=1.3.0; extra == "all"
22
22
  Provides-Extra: test
@@ -49,7 +49,7 @@ Dynamic: license-file
49
49
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/onetrust-api)
50
50
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/onetrust-api)
51
51
 
52
- *Version: 1.3.3*
52
+ *Version: 1.3.4*
53
53
 
54
54
  ## Overview
55
55
 
@@ -162,4 +162,5 @@ tests/test_kg_ingest.py
162
162
  tests/test_mcp_server.py
163
163
  tests/test_onetrust_api_brute_force_coverage.py
164
164
  tests/test_onetrust_coverage.py
165
+ tests/test_publication_workflow.py
165
166
  tests/test_startup.py
@@ -0,0 +1,8 @@
1
+ [agent_connector_sdk.connector]
2
+ onetrust-mcp = onetrust_api:connector
3
+
4
+ [agent_connector_sdk.prompt_providers]
5
+ onetrust-api = onetrust_api.prompts
6
+
7
+ [console_scripts]
8
+ onetrust-mcp = onetrust_api.mcp_server:mcp_server
@@ -1,4 +1,4 @@
1
- agent-connector-sdk[mcp]<1.0.0,>=0.4.1
1
+ scion-sdk[mcp]<1.0.0,>=0.5.6
2
2
  python-dotenv>=1.2.4
3
3
  requests>=2.34.2
4
4
 
@@ -6,7 +6,7 @@ requests>=2.34.2
6
6
  onetrust-api[mcp]>=1.3.0
7
7
 
8
8
  [mcp]
9
- agent-connector-sdk[mcp]<1.0.0,>=0.4.1
9
+ scion-sdk[mcp]<1.0.0,>=0.5.6
10
10
 
11
11
  [test]
12
12
  pytest-xdist>=3.8.0
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "onetrust-api"
7
- version = "1.3.3"
7
+ version = "1.3.4"
8
8
  description = "OneTrust API + MCP Server + A2A Agent — 100% API coverage"
9
9
  readme = "README.md"
10
10
  classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
11
11
  requires-python = ">=3.12"
12
- dependencies = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0", "python-dotenv>=1.2.4", "requests>=2.34.2",]
12
+ dependencies = [ "scion-sdk[mcp]>=0.5.6,<1.0.0", "python-dotenv>=1.2.4", "requests>=2.34.2",]
13
13
  [[project.authors]]
14
14
  name = "Project Maintainers"
15
15
  email = "maintainers@users.noreply.github.com"
@@ -18,7 +18,7 @@ email = "maintainers@users.noreply.github.com"
18
18
  text = "MIT"
19
19
 
20
20
  [project.optional-dependencies]
21
- mcp = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0",]
21
+ mcp = [ "scion-sdk[mcp]>=0.5.6,<1.0.0",]
22
22
  all = [ "onetrust-api[mcp]>=1.3.0",]
23
23
  test = [
24
24
  "pytest-xdist>=3.8.0", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0",]
@@ -26,18 +26,12 @@ test = [
26
26
  [project.scripts]
27
27
  onetrust-mcp = "onetrust_api.mcp_server:mcp_server"
28
28
 
29
- [project.entry-points."agent_connector_sdk.skill_providers"]
30
- onetrust-api = "onetrust_api.skills"
31
-
32
- [project.entry-points."agent_connector_sdk.ontology_providers"]
33
- onetrust-api = "onetrust_api.ontology"
34
-
35
29
  [project.entry-points."agent_connector_sdk.prompt_providers"]
36
30
  onetrust-api = "onetrust_api.prompts"
37
31
 
38
32
  # The one declared connector identity: the fleet name (SDK-CONNECTOR-CONTROL-R071).
39
33
  [project.entry-points."agent_connector_sdk.connector"]
40
- onetrust-mcp = "onetrust_api"
34
+ onetrust-mcp = "onetrust_api:connector"
41
35
 
42
36
  [tool.uv.workspace]
43
37
  members = ["."]
@@ -0,0 +1,248 @@
1
+ """CONN-ONETRUST-API-CONNECTOR-CONTENT-R001: the server lists its packaged skills, ontology and prompts by default."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import asyncio
6
+ import importlib
7
+ from pathlib import Path
8
+
9
+ import pytest
10
+ from fastmcp import Client
11
+
12
+ PACKAGE = "onetrust_api"
13
+ ROOT = Path(list(importlib.import_module(PACKAGE).__path__)[0])
14
+
15
+ pytestmark = pytest.mark.spec("CONN-ONETRUST-API-CONNECTOR-CONTENT-R001")
16
+
17
+
18
+ def _server():
19
+ from unittest.mock import patch
20
+
21
+ from fastmcp import FastMCP
22
+
23
+ module = importlib.import_module("onetrust_api.mcp_server")
24
+ with patch(
25
+ "sys.argv", ["connector", "--transport", "stdio", "--auth-type", "none"]
26
+ ):
27
+ result = module.get_mcp_instance()
28
+ if isinstance(result, FastMCP):
29
+ return result
30
+ return next(value for value in result if isinstance(value, FastMCP))
31
+
32
+
33
+ async def _listings():
34
+ from importlib.metadata import version
35
+
36
+ async with Client(_server(), mode="legacy") as client:
37
+ assert client.initialize_result is not None
38
+ assert client.initialize_result.server_info.version == version("onetrust-api")
39
+ resources = {str(r.uri) for r in await client.list_resources()}
40
+ prompts = {p.name for p in await client.list_prompts()}
41
+ for uri in resources:
42
+ if uri.startswith(("ontology://", "shapes://")):
43
+ directory = ROOT / "ontology"
44
+ if uri.startswith("shapes://"):
45
+ directory = directory / "shapes"
46
+ actual = await client.read_resource(uri)
47
+ assert (
48
+ actual[0].text.encode()
49
+ == (directory / uri.rsplit("/", 1)[-1]).read_bytes()
50
+ )
51
+ return resources, prompts
52
+
53
+
54
+ def test_default_content_surfaces() -> None:
55
+ resources, prompts = asyncio.run(_listings())
56
+ if list(ROOT.glob("skills/*/SKILL.md")):
57
+ assert any(u.startswith("skill://") for u in resources)
58
+ if list(ROOT.glob("ontology/*.ttl")):
59
+ assert any(u.startswith("ontology://onetrust-mcp/") for u in resources)
60
+ for path in ROOT.glob("prompts/*.json"):
61
+ if not path.name.startswith("_"):
62
+ assert path.stem in prompts
63
+
64
+
65
+ @pytest.fixture(autouse=True)
66
+ def _no_outbound_network(monkeypatch):
67
+ import socket
68
+
69
+ def refuse(*_args, **_kwargs):
70
+ raise AssertionError("content publication must not contact an external system")
71
+
72
+ monkeypatch.setenv("MCP_FLEET_REGISTRATION", "false")
73
+ monkeypatch.setattr(socket.socket, "connect", refuse)
74
+
75
+
76
+ def test_sdk_floor_supports_content_identity_and_current_pack_protocol() -> None:
77
+ import tomllib
78
+
79
+ from packaging.requirements import Requirement
80
+
81
+ project = tomllib.loads((ROOT.parent / "pyproject.toml").read_text())["project"]
82
+ declared = list(project.get("dependencies", []))
83
+ for extra in project.get("optional-dependencies", {}).values():
84
+ declared.extend(extra)
85
+ sdk = [Requirement(value) for value in declared if value.startswith("scion-sdk")]
86
+ assert sdk
87
+ for requirement in sdk:
88
+ assert requirement.specifier.contains("0.5.6")
89
+ assert not requirement.specifier.contains("0.5.5")
90
+
91
+
92
+ def test_production_pack_binds_packaged_ontology_and_shapes():
93
+ import hashlib
94
+ from importlib.metadata import version
95
+
96
+ from agent_connector_sdk.artifacts.pack import build_content_pack
97
+ from agent_connector_sdk.artifacts.resources import ResourceArtifactKind
98
+ from agent_connector_sdk.ports.session import TransportEndpoint
99
+ from agent_connector_sdk.transports.mcp import McpTransport
100
+
101
+ async def capture():
102
+ async with McpTransport().session(
103
+ TransportEndpoint(in_process=_server())
104
+ ) as session:
105
+ return await build_content_pack(
106
+ session, connector="onetrust-mcp", kinds=(ResourceArtifactKind(),)
107
+ )
108
+
109
+ pack = asyncio.run(capture())
110
+ assert pack.server_package_version == version("onetrust-api")
111
+ entries = {str(entry.uri): entry for entry in pack.archive.entries}
112
+ assert "connector://resources" in entries
113
+ for path in ROOT.glob("ontology/**/*.ttl"):
114
+ scheme = "shapes" if path.parent.name == "shapes" else "ontology"
115
+ uri = f"{scheme}://onetrust-mcp/{path.name}"
116
+ assert entries[uri].body.sha256 == hashlib.sha256(path.read_bytes()).hexdigest()
117
+
118
+
119
+ def test_canonical_and_legacy_routes_preserve_the_full_tool_surface():
120
+ from agent_connector_sdk.connector import build_server
121
+
122
+ async def capture():
123
+ _, canonical = build_server(
124
+ PACKAGE, command_args=["--transport", "stdio", "--auth-type", "none"]
125
+ )
126
+ async with (
127
+ Client(_server()) as legacy_client,
128
+ Client(canonical) as canonical_client,
129
+ ):
130
+ legacy = {
131
+ tool.name: tool.model_dump(mode="json")
132
+ for tool in await legacy_client.list_tools()
133
+ }
134
+ declared = {
135
+ tool.name: tool.model_dump(mode="json")
136
+ for tool in await canonical_client.list_tools()
137
+ }
138
+ assert len(legacy) == 601
139
+ assert declared == legacy
140
+
141
+ asyncio.run(capture())
142
+
143
+
144
+ def test_legacy_cli_configuration_file_still_controls_host_and_port(
145
+ tmp_path, monkeypatch
146
+ ):
147
+ import json
148
+
149
+ from onetrust_api.mcp_server import get_mcp_instance
150
+
151
+ config = tmp_path / "connector.json"
152
+ config.write_text(json.dumps({"HOST": "127.0.0.1", "PORT": 9187}))
153
+ monkeypatch.delenv("HOST", raising=False)
154
+ monkeypatch.delenv("PORT", raising=False)
155
+ monkeypatch.setenv("CONNECTOR_CONFIG_FILE", str(config))
156
+ _, args, _, tags = get_mcp_instance(
157
+ command_args=["--transport", "stdio", "--auth-type", "none"]
158
+ )
159
+ assert (args.host, args.port) == ("127.0.0.1", 9187)
160
+ assert tags == [
161
+ "access_management",
162
+ "ai_governance",
163
+ "assessments",
164
+ "audit_management",
165
+ "bulk_export",
166
+ "cmp",
167
+ "compliance_automation",
168
+ "consent_interfaces",
169
+ "consent_receipts",
170
+ "cookie_consent",
171
+ "cookie_consent_legacy",
172
+ "cookie_domain_data",
173
+ "cross_device_consent",
174
+ "data_catalog",
175
+ "data_discovery",
176
+ "data_discovery_worker",
177
+ "data_mapping",
178
+ "data_mapping_legacy",
179
+ "documents",
180
+ "dsar",
181
+ "esg",
182
+ "incidents",
183
+ "integrations",
184
+ "inventory",
185
+ "issues_management",
186
+ "it_risk_management",
187
+ "mobile_app_consent",
188
+ "object_manager",
189
+ "policy_management",
190
+ "privacy_notices",
191
+ "task_management",
192
+ "tprm",
193
+ "training",
194
+ "universal_consent",
195
+ "user_provisioning",
196
+ "custom_api",
197
+ ]
198
+
199
+
200
+ def test_each_server_registers_existing_ingest_tools_once(monkeypatch):
201
+ from agent_connector_sdk.connector import build_server
202
+
203
+ module = importlib.import_module("onetrust_api.mcp_server")
204
+ calls = []
205
+ original = module.register_ingest_tools
206
+
207
+ def track(server):
208
+ calls.append(server)
209
+ return original(server)
210
+
211
+ monkeypatch.setattr(module, "register_ingest_tools", track)
212
+ legacy = _server()
213
+ _, canonical = build_server(
214
+ PACKAGE, command_args=["--transport", "stdio", "--auth-type", "none"]
215
+ )
216
+ assert calls == [legacy, canonical]
217
+
218
+
219
+ def test_sdk_loader_preserves_explicit_source_mapping_and_resource_contracts():
220
+ from agent_connector_sdk.ingest.live_declaration import load_declaration
221
+
222
+ from onetrust_api import connector_sources as declared
223
+
224
+ actual = load_declaration(PACKAGE)
225
+ assert actual.connector == "onetrust-mcp"
226
+ assert (
227
+ len(actual.sources),
228
+ len(actual.schema_mappings),
229
+ len(actual.resources),
230
+ ) == (2, 8, 8)
231
+ sources = {item.source_id: item for item in actual.sources}
232
+ for item in declared.SOURCES:
233
+ for entry in item["connector_sources"]:
234
+ source = sources[entry["source_id"]]
235
+ assert source.tools == (entry["tool"],)
236
+ for field, value in entry.items():
237
+ if field not in {"tool", "mapping"}:
238
+ assert getattr(source, field) == value
239
+ assert set(actual.schema_mappings) == set(declared.SCHEMA_MAPPINGS)
240
+ for name, mapping in declared.SCHEMA_MAPPINGS.items():
241
+ assert actual.schema_mappings[name].fields == mapping["fields"]
242
+ assert actual.schema_mappings[name].ontology_class == mapping.get(
243
+ "ontology_class"
244
+ )
245
+ resources = {item.name: item for item in actual.resources}
246
+ for resource in declared.RESOURCES:
247
+ for field, value in resource.items():
248
+ assert getattr(resources[resource["name"]], field) == value
@@ -35,7 +35,7 @@ def _call_connectors(path: Path) -> list[str]:
35
35
  def test_connector_name_is_the_fleet_name() -> None:
36
36
  pyproject = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
37
37
  assert pyproject["project"]["entry-points"]["agent_connector_sdk.connector"] == {
38
- FLEET: "onetrust_api"
38
+ FLEET: "onetrust_api:connector"
39
39
  }
40
40
  assert connector_name("onetrust_api") == FLEET
41
41
  for module in sorted(PACKAGE.glob("*.py")):
@@ -0,0 +1,81 @@
1
+ """Keep docs pushes separate from guarded package publication."""
2
+
3
+ from fnmatch import fnmatchcase
4
+ from pathlib import Path
5
+
6
+ import pytest
7
+ import yaml
8
+
9
+ ROOT = Path(__file__).resolve().parents[1]
10
+
11
+
12
+ def _workflow(name):
13
+ return yaml.safe_load((ROOT / ".github/workflows" / name).read_text())
14
+
15
+
16
+ def _push_matches(workflow, ref):
17
+ # PyYAML's YAML 1.1 reader represents the Actions "on" key as True.
18
+ push = workflow[True]["push"]
19
+ kind, name = ref.removeprefix("refs/").split("/", 1)
20
+ filters = push.get({"heads": "branches", "tags": "tags"}[kind], [])
21
+ return any(fnmatchcase(name, pattern) for pattern in filters)
22
+
23
+
24
+ @pytest.mark.parametrize(
25
+ "ref, expected",
26
+ [
27
+ ("refs/heads/main", True),
28
+ ("refs/heads/docs-update", False),
29
+ ("refs/tags/v2.1.0", False),
30
+ ],
31
+ )
32
+ def test_only_main_starts_package_publication(ref, expected):
33
+ assert _push_matches(_workflow("pipeline.yml"), ref) is expected
34
+
35
+
36
+ def test_each_package_publisher_uses_the_shared_pipelines():
37
+ jobs = _workflow("pipeline.yml")["jobs"]
38
+ assert set(jobs) == {"publish-pypi"}
39
+ assert jobs["publish-pypi"]["uses"].endswith("/python_pipeline.yml@main")
40
+ assert _workflow("pipeline.yml")[True]["push"]["paths-ignore"] == [
41
+ "docker/Dockerfile",
42
+ ".bumpversion.cfg",
43
+ "specs/**/status.json",
44
+ ]
45
+ container = _workflow("container-release.yml")
46
+ assert container[True]["push"] == {
47
+ "branches": ["main"],
48
+ "paths": ["docker/Dockerfile"],
49
+ }
50
+ assert container["jobs"]["publish-docker"]["needs"] == "verify-public-wheel"
51
+ assert container["jobs"]["publish-docker"]["uses"].endswith(
52
+ "/container_pipeline.yml@main"
53
+ )
54
+ for publisher in (jobs["publish-pypi"], container["jobs"]["publish-docker"]):
55
+ assert "if" not in publisher
56
+ assert not publisher.get("continue-on-error", False)
57
+ guard = container["jobs"]["verify-public-wheel"]["steps"][-1]
58
+ assert guard["with"] == {
59
+ "mode": "published-wheel",
60
+ "distribution": "onetrust-api",
61
+ "module": "onetrust_api",
62
+ }
63
+
64
+
65
+ @pytest.mark.parametrize(
66
+ "path, expected",
67
+ [
68
+ ("docker/Dockerfile", False),
69
+ (".bumpversion.cfg", False),
70
+ ("specs/sdk/status.json", False),
71
+ ("onetrust_api/specs/openapi.json", True),
72
+ ("pyproject.toml", True),
73
+ ("uv.lock", True),
74
+ ("onetrust_api/mcp_server.py", True),
75
+ ("README.md", True),
76
+ (".github/workflows/pipeline.yml", True),
77
+ ],
78
+ )
79
+ def test_package_publication_skips_only_container_pin_refresh(path, expected):
80
+ ignores = _workflow("pipeline.yml")[True]["push"]["paths-ignore"]
81
+ assert (not any(fnmatchcase(path, pattern) for pattern in ignores)) is expected
@@ -1,8 +1,6 @@
1
1
  """Import / boot smoke tests."""
2
2
 
3
3
 
4
-
5
-
6
4
  def test_api_composes_all_domains():
7
5
  from onetrust_api.api._operation_manifest import DOMAINS
8
6
  from onetrust_api.api_client import Api
@@ -1,14 +0,0 @@
1
- [agent_connector_sdk.connector]
2
- onetrust-mcp = onetrust_api
3
-
4
- [agent_connector_sdk.ontology_providers]
5
- onetrust-api = onetrust_api.ontology
6
-
7
- [agent_connector_sdk.prompt_providers]
8
- onetrust-api = onetrust_api.prompts
9
-
10
- [agent_connector_sdk.skill_providers]
11
- onetrust-api = onetrust_api.skills
12
-
13
- [console_scripts]
14
- onetrust-mcp = onetrust_api.mcp_server:mcp_server
@@ -1,43 +0,0 @@
1
- """CONN-ONETRUST-API-CONNECTOR-CONTENT-R001: the server lists its packaged skills, ontology and prompts by default."""
2
-
3
- from __future__ import annotations
4
-
5
- import asyncio
6
- import importlib
7
- from pathlib import Path
8
-
9
- import pytest
10
- from fastmcp import Client
11
-
12
- PACKAGE = "onetrust_api"
13
- ROOT = Path(list(importlib.import_module(PACKAGE).__path__)[0])
14
-
15
- pytestmark = pytest.mark.spec("CONN-ONETRUST-API-CONNECTOR-CONTENT-R001")
16
-
17
-
18
- def _server():
19
- namespace = {"__name__": PACKAGE + ".mcp_server"}
20
- exec(
21
- "from agent_connector_sdk.mcp.server import create_mcp_server\n"
22
- "result = create_mcp_server('onetrust-mcp', version='0', command_args=[])",
23
- namespace,
24
- )
25
- return namespace["result"][1]
26
-
27
-
28
- async def _listings():
29
- async with Client(_server()) as client:
30
- resources = {str(r.uri) for r in await client.list_resources()}
31
- prompts = {p.name for p in await client.list_prompts()}
32
- return resources, prompts
33
-
34
-
35
- def test_default_content_surfaces() -> None:
36
- resources, prompts = asyncio.run(_listings())
37
- if list(ROOT.glob("skills/*/SKILL.md")):
38
- assert any(u.startswith("skill://") for u in resources)
39
- if list(ROOT.glob("ontology/*.ttl")):
40
- assert any(u.startswith("ontology://onetrust-mcp/") for u in resources)
41
- for path in ROOT.glob("prompts/*.json"):
42
- if not path.name.startswith("_"):
43
- assert path.stem in prompts
File without changes
File without changes