gatewaysdk 0.3.2__py3-none-any.whl
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.
- gatewaysdk/__init__.py +540 -0
- gatewaysdk/adapter/__init__.py +15 -0
- gatewaysdk/adapter/base.py +94 -0
- gatewaysdk/adapter/messages.py +270 -0
- gatewaysdk/adapter/triplet.py +1026 -0
- gatewaysdk/algorithm/__init__.py +39 -0
- gatewaysdk/algorithm/apo/__init__.py +5 -0
- gatewaysdk/algorithm/apo/apo.py +898 -0
- gatewaysdk/algorithm/apo/prompts/apply_edit_variant01.poml +22 -0
- gatewaysdk/algorithm/apo/prompts/apply_edit_variant02.poml +18 -0
- gatewaysdk/algorithm/apo/prompts/text_gradient_variant01.poml +18 -0
- gatewaysdk/algorithm/apo/prompts/text_gradient_variant02.poml +16 -0
- gatewaysdk/algorithm/apo/prompts/text_gradient_variant03.poml +107 -0
- gatewaysdk/algorithm/base.py +262 -0
- gatewaysdk/algorithm/decorator.py +264 -0
- gatewaysdk/algorithm/evals/__init__.py +7 -0
- gatewaysdk/algorithm/evals/evals.py +217 -0
- gatewaysdk/algorithm/fast.py +250 -0
- gatewaysdk/algorithm/gepa/__init__.py +61 -0
- gatewaysdk/algorithm/gepa/adapter.py +495 -0
- gatewaysdk/algorithm/gepa/gepa.py +570 -0
- gatewaysdk/algorithm/gepa/lib/__init__.py +18 -0
- gatewaysdk/algorithm/gepa/lib/adapters/README.md +12 -0
- gatewaysdk/algorithm/gepa/lib/adapters/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/README.md +341 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/__init__.py +1 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/anymaths_adapter.py +174 -0
- gatewaysdk/algorithm/gepa/lib/adapters/anymaths_adapter/requirements.txt +1 -0
- gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/README.md +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/default_adapter/default_adapter.py +209 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/README.md +7 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_adapter/dspy_adapter.py +307 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/README.md +99 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/dspy_program_proposal_signature.py +137 -0
- gatewaysdk/algorithm/gepa/lib/adapters/dspy_full_program_adapter/full_program_adapter.py +268 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/GEPA_RAG.md +621 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/__init__.py +56 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/evaluation_metrics.py +226 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/generic_rag_adapter.py +496 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/rag_pipeline.py +238 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_store_interface.py +212 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/__init__.py +2 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/chroma_store.py +196 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/lancedb_store.py +422 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/milvus_store.py +409 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/qdrant_store.py +368 -0
- gatewaysdk/algorithm/gepa/lib/adapters/generic_rag_adapter/vector_stores/weaviate_store.py +418 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/README.md +552 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/__init__.py +37 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_adapter.py +699 -0
- gatewaysdk/algorithm/gepa/lib/adapters/mcp_adapter/mcp_client.py +364 -0
- gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/README.md +9 -0
- gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/adapters/terminal_bench_adapter/terminal_bench_adapter.py +217 -0
- gatewaysdk/algorithm/gepa/lib/api.py +382 -0
- gatewaysdk/algorithm/gepa/lib/core/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/core/adapter.py +180 -0
- gatewaysdk/algorithm/gepa/lib/core/data_loader.py +74 -0
- gatewaysdk/algorithm/gepa/lib/core/engine.py +379 -0
- gatewaysdk/algorithm/gepa/lib/core/result.py +233 -0
- gatewaysdk/algorithm/gepa/lib/core/state.py +636 -0
- gatewaysdk/algorithm/gepa/lib/examples/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/examples/aime.py +24 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/eval_default.py +111 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/instruction_prompt.txt +9 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/prompt-templates/optimal_prompt.txt +24 -0
- gatewaysdk/algorithm/gepa/lib/examples/anymaths-bench/train_anymaths.py +177 -0
- gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/arc_agi.ipynb +25705 -0
- gatewaysdk/algorithm/gepa/lib/examples/dspy_full_program_evolution/example.ipynb +348 -0
- gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/__init__.py +4 -0
- gatewaysdk/algorithm/gepa/lib/examples/mcp_adapter/mcp_optimization_example.py +456 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/RAG_GUIDE.md +613 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/__init__.py +9 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/rag_optimization.py +820 -0
- gatewaysdk/algorithm/gepa/lib/examples/rag_adapter/requirements-rag.txt +29 -0
- gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/instruction_prompt.txt +16 -0
- gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/prompt-templates/terminus.txt +9 -0
- gatewaysdk/algorithm/gepa/lib/examples/terminal-bench/train_terminus.py +161 -0
- gatewaysdk/algorithm/gepa/lib/gepa_utils.py +117 -0
- gatewaysdk/algorithm/gepa/lib/logging/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/logging/experiment_tracker.py +187 -0
- gatewaysdk/algorithm/gepa/lib/logging/logger.py +75 -0
- gatewaysdk/algorithm/gepa/lib/logging/utils.py +103 -0
- gatewaysdk/algorithm/gepa/lib/proposer/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/proposer/base.py +31 -0
- gatewaysdk/algorithm/gepa/lib/proposer/merge.py +357 -0
- gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/base.py +49 -0
- gatewaysdk/algorithm/gepa/lib/proposer/reflective_mutation/reflective_mutation.py +176 -0
- gatewaysdk/algorithm/gepa/lib/py.typed +0 -0
- gatewaysdk/algorithm/gepa/lib/strategies/__init__.py +0 -0
- gatewaysdk/algorithm/gepa/lib/strategies/batch_sampler.py +77 -0
- gatewaysdk/algorithm/gepa/lib/strategies/candidate_selector.py +50 -0
- gatewaysdk/algorithm/gepa/lib/strategies/component_selector.py +36 -0
- gatewaysdk/algorithm/gepa/lib/strategies/eval_policy.py +64 -0
- gatewaysdk/algorithm/gepa/lib/strategies/instruction_proposal.py +126 -0
- gatewaysdk/algorithm/gepa/lib/utils/__init__.py +10 -0
- gatewaysdk/algorithm/gepa/lib/utils/stop_condition.py +196 -0
- gatewaysdk/algorithm/gepa/tracing.py +105 -0
- gatewaysdk/algorithm/utils.py +177 -0
- gatewaysdk/algorithm/verl/__init__.py +5 -0
- gatewaysdk/algorithm/verl/interface.py +202 -0
- gatewaysdk/automations.py +111 -0
- gatewaysdk/benchmark_hub/README.md +88 -0
- gatewaysdk/benchmark_hub/__init__.py +119 -0
- gatewaysdk/benchmark_hub/_archive.py +189 -0
- gatewaysdk/benchmark_hub/_tar.py +6 -0
- gatewaysdk/benchmark_hub/client.py +992 -0
- gatewaysdk/benchmark_hub/dispatch_shard.py +34 -0
- gatewaysdk/benchmark_hub/eval_config.py +20 -0
- gatewaysdk/benchmark_hub/evals.py +351 -0
- gatewaysdk/benchmark_hub/harbor_adapter.py +673 -0
- gatewaysdk/benchmark_hub/path_utils.py +81 -0
- gatewaysdk/benchmark_hub/save_utils.py +101 -0
- gatewaysdk/benchmark_hub/verifiers_adapter.py +327 -0
- gatewaysdk/benchmark_hub/versioning.py +72 -0
- gatewaysdk/build.py +515 -0
- gatewaysdk/cli/__init__.py +58 -0
- gatewaysdk/cli/agent_runner.py +132 -0
- gatewaysdk/cli/http_client.py +115 -0
- gatewaysdk/cli/platform.py +4086 -0
- gatewaysdk/cli/prometheus.py +115 -0
- gatewaysdk/cli/release_gate.py +215 -0
- gatewaysdk/cli/store.py +131 -0
- gatewaysdk/cli/vllm.py +29 -0
- gatewaysdk/client.py +406 -0
- gatewaysdk/config.py +348 -0
- gatewaysdk/connectors/__init__.py +25 -0
- gatewaysdk/connectors/client.py +203 -0
- gatewaysdk/connectors/skill.py +25 -0
- gatewaysdk/connectors/template.py +106 -0
- gatewaysdk/context.py +606 -0
- gatewaysdk/emitter/__init__.py +43 -0
- gatewaysdk/emitter/annotation.py +370 -0
- gatewaysdk/emitter/exception.py +54 -0
- gatewaysdk/emitter/message.py +61 -0
- gatewaysdk/emitter/object.py +117 -0
- gatewaysdk/emitter/reward.py +320 -0
- gatewaysdk/env_var.py +156 -0
- gatewaysdk/environment/__init__.py +108 -0
- gatewaysdk/environment/_bundle.py +281 -0
- gatewaysdk/environment/_harbor.py +276 -0
- gatewaysdk/environment/_materialize.py +97 -0
- gatewaysdk/environment/_tar.py +33 -0
- gatewaysdk/environment/_world.py +346 -0
- gatewaysdk/environment/core.py +527 -0
- gatewaysdk/environment/errors.py +58 -0
- gatewaysdk/environment/runtime.py +150 -0
- gatewaysdk/environment/schema/__init__.py +35 -0
- gatewaysdk/environment/schema/__main__.py +225 -0
- gatewaysdk/environment/schema/_slack_fidelity.py +116 -0
- gatewaysdk/environment/schema/_slack_scenario.py +183 -0
- gatewaysdk/environment/schema/api.py +1628 -0
- gatewaysdk/environment/schema/batch.py +755 -0
- gatewaysdk/environment/schema/compiler.py +615 -0
- gatewaysdk/environment/schema/conform.py +428 -0
- gatewaysdk/environment/schema/connector.py +777 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/handlers.py +17 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/parity.json +28 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/provenance.json +233 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/scope.toml +112 -0
- gatewaysdk/environment/schema/connectors/apple-business-manager/world.json +1380 -0
- gatewaysdk/environment/schema/connectors/base.json +28 -0
- gatewaysdk/environment/schema/connectors/custom/handlers.py +18 -0
- gatewaysdk/environment/schema/connectors/custom/world.json +123 -0
- gatewaysdk/environment/schema/connectors/github/handlers.py +81 -0
- gatewaysdk/environment/schema/connectors/github/parity.json +37 -0
- gatewaysdk/environment/schema/connectors/github/provenance.json +134 -0
- gatewaysdk/environment/schema/connectors/github/scope.toml +158 -0
- gatewaysdk/environment/schema/connectors/github/world.json +5869 -0
- gatewaysdk/environment/schema/connectors/google-calendar/handlers.py +23 -0
- gatewaysdk/environment/schema/connectors/google-calendar/world.json +209 -0
- gatewaysdk/environment/schema/connectors/google-drive/handlers.py +18 -0
- gatewaysdk/environment/schema/connectors/google-drive/world.json +286 -0
- gatewaysdk/environment/schema/connectors/jamf/handlers.py +34 -0
- gatewaysdk/environment/schema/connectors/jamf/parity.json +49 -0
- gatewaysdk/environment/schema/connectors/jamf/provenance.json +181 -0
- gatewaysdk/environment/schema/connectors/jamf/scope.toml +128 -0
- gatewaysdk/environment/schema/connectors/jamf/world.json +2218 -0
- gatewaysdk/environment/schema/connectors/jira/handlers.py +28 -0
- gatewaysdk/environment/schema/connectors/jira/world.json +389 -0
- gatewaysdk/environment/schema/connectors/kandji/handlers.py +38 -0
- gatewaysdk/environment/schema/connectors/kandji/parity.json +29 -0
- gatewaysdk/environment/schema/connectors/kandji/provenance.json +152 -0
- gatewaysdk/environment/schema/connectors/kandji/scope.toml +120 -0
- gatewaysdk/environment/schema/connectors/kandji/world.json +765 -0
- gatewaysdk/environment/schema/connectors/linear/handlers.py +20 -0
- gatewaysdk/environment/schema/connectors/linear/world.json +363 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/fidelity.json +45 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/handlers.py +1 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/provenance.json +851 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/scope.md +231 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/teams-types.json +1710 -0
- gatewaysdk/environment/schema/connectors/microsoft-teams/world.json +858 -0
- gatewaysdk/environment/schema/connectors/netsuite/handlers.py +32 -0
- gatewaysdk/environment/schema/connectors/netsuite/parity.json +50 -0
- gatewaysdk/environment/schema/connectors/netsuite/provenance.json +137 -0
- gatewaysdk/environment/schema/connectors/netsuite/scope.toml +78 -0
- gatewaysdk/environment/schema/connectors/netsuite/world.json +16243 -0
- gatewaysdk/environment/schema/connectors/salesforce/handlers.py +806 -0
- gatewaysdk/environment/schema/connectors/salesforce/parity.json +46 -0
- gatewaysdk/environment/schema/connectors/salesforce/provenance.json +143 -0
- gatewaysdk/environment/schema/connectors/salesforce/scope.toml +174 -0
- gatewaysdk/environment/schema/connectors/salesforce/world.json +4695 -0
- gatewaysdk/environment/schema/connectors/slack/MODEL.md +236 -0
- gatewaysdk/environment/schema/connectors/slack/capabilities.json +1039 -0
- gatewaysdk/environment/schema/connectors/slack/handlers.py +762 -0
- gatewaysdk/environment/schema/connectors/slack/parity.json +65 -0
- gatewaysdk/environment/schema/connectors/slack/provenance.json +294 -0
- gatewaysdk/environment/schema/connectors/slack/scope.toml +44 -0
- gatewaysdk/environment/schema/connectors/slack/world.json +4993 -0
- gatewaysdk/environment/schema/connectors/workday/handlers.py +75 -0
- gatewaysdk/environment/schema/connectors/workday/parity.json +36 -0
- gatewaysdk/environment/schema/connectors/workday/provenance.json +179 -0
- gatewaysdk/environment/schema/connectors/workday/scope.toml +180 -0
- gatewaysdk/environment/schema/connectors/workday/world.json +806 -0
- gatewaysdk/environment/schema/data.py +593 -0
- gatewaysdk/environment/schema/extract.py +263 -0
- gatewaysdk/environment/schema/host.py +2437 -0
- gatewaysdk/environment/schema/host_surfaces.py +275 -0
- gatewaysdk/environment/schema/platform.py +1272 -0
- gatewaysdk/environment/schema/scaffold.py +250 -0
- gatewaysdk/environment/schema/skill.py +118 -0
- gatewaysdk/environment/schema/skills/agents/connector-template-author.md +202 -0
- gatewaysdk/environment/schema/skills/connector-schema-authoring/CONNECTORS.md +331 -0
- gatewaysdk/environment/schema/skills/connector-schema-authoring/CONVENTIONS.md +100 -0
- gatewaysdk/environment/schema/skills/connector-schema-authoring/SKILL.md +313 -0
- gatewaysdk/environment/schema/skills/world-data-ingestion/ROWS.md +223 -0
- gatewaysdk/environment/schema/skills/world-data-ingestion/SKILL.md +293 -0
- gatewaysdk/environment/schema/skills/worlds-getting-started/SKILL.md +390 -0
- gatewaysdk/environment/schema/slack.py +757 -0
- gatewaysdk/environment/schema/snapshot.py +479 -0
- gatewaysdk/environment/schema/store.py +904 -0
- gatewaysdk/environment/schema/tasks.py +525 -0
- gatewaysdk/environment/schema/tools_world.py +322 -0
- gatewaysdk/environment/schema/validation.py +577 -0
- gatewaysdk/environment/schema/worker.py +78 -0
- gatewaysdk/environment/schema/workers.py +500 -0
- gatewaysdk/environment/schema/world_tests.py +336 -0
- gatewaysdk/environments/__init__.py +24 -0
- gatewaysdk/environments/client.py +486 -0
- gatewaysdk/environments/types.py +318 -0
- gatewaysdk/execution/__init__.py +15 -0
- gatewaysdk/execution/base.py +64 -0
- gatewaysdk/execution/client_server.py +443 -0
- gatewaysdk/execution/events.py +69 -0
- gatewaysdk/execution/inter_process.py +16 -0
- gatewaysdk/execution/shared_memory.py +282 -0
- gatewaysdk/experiments/__init__.py +90 -0
- gatewaysdk/experiments/assignment.py +177 -0
- gatewaysdk/experiments/client.py +877 -0
- gatewaysdk/experiments/exposure.py +222 -0
- gatewaysdk/experiments/types.py +81 -0
- gatewaysdk/importers/__init__.py +49 -0
- gatewaysdk/importers/_normalize.py +91 -0
- gatewaysdk/importers/builder.py +173 -0
- gatewaysdk/importers/client.py +95 -0
- gatewaysdk/importers/langsmith.py +196 -0
- gatewaysdk/importers/recipes.py +249 -0
- gatewaysdk/instrumentation/__init__.py +300 -0
- gatewaysdk/instrumentation/agentops.py +314 -0
- gatewaysdk/instrumentation/agentops_langchain.py +45 -0
- gatewaysdk/instrumentation/base.py +119 -0
- gatewaysdk/instrumentation/litellm.py +83 -0
- gatewaysdk/instrumentation/registry.py +273 -0
- gatewaysdk/instrumentation/vllm.py +81 -0
- gatewaysdk/instrumentation/weave.py +500 -0
- gatewaysdk/integrations/__init__.py +15 -0
- gatewaysdk/integrations/gateway/__init__.py +11 -0
- gatewaysdk/integrations/gateway/client.py +171 -0
- gatewaysdk/integrations/tool_access.py +549 -0
- gatewaysdk/litagent/__init__.py +11 -0
- gatewaysdk/litagent/decorator.py +536 -0
- gatewaysdk/litagent/litagent.py +252 -0
- gatewaysdk/llm_proxy.py +1742 -0
- gatewaysdk/logging.py +370 -0
- gatewaysdk/memory.py +278 -0
- gatewaysdk/personas.py +186 -0
- gatewaysdk/platform/__init__.py +17 -0
- gatewaysdk/platform/builder.py +221 -0
- gatewaysdk/platform/compatibility.py +67 -0
- gatewaysdk/platform/manifest.py +185 -0
- gatewaysdk/platform/orchestrator.py +901 -0
- gatewaysdk/platform/registry.py +122 -0
- gatewaysdk/platform/worker.py +864 -0
- gatewaysdk/replay/__init__.py +1032 -0
- gatewaysdk/replay/pytest.py +56 -0
- gatewaysdk/reward.py +7 -0
- gatewaysdk/run.py +1781 -0
- gatewaysdk/runner/__init__.py +11 -0
- gatewaysdk/runner/agent.py +878 -0
- gatewaysdk/runner/base.py +182 -0
- gatewaysdk/runner/legacy.py +309 -0
- gatewaysdk/security.py +700 -0
- gatewaysdk/semconv.py +170 -0
- gatewaysdk/server.py +399 -0
- gatewaysdk/sessions.py +282 -0
- gatewaysdk/store/__init__.py +45 -0
- gatewaysdk/store/base.py +908 -0
- gatewaysdk/store/client_server.py +2093 -0
- gatewaysdk/store/collection/__init__.py +30 -0
- gatewaysdk/store/collection/base.py +587 -0
- gatewaysdk/store/collection/memory.py +970 -0
- gatewaysdk/store/collection/mongo.py +1412 -0
- gatewaysdk/store/collection_based.py +1823 -0
- gatewaysdk/store/gateway.py +983 -0
- gatewaysdk/store/gateway_listener.py +465 -0
- gatewaysdk/store/listener.py +58 -0
- gatewaysdk/store/memory.py +396 -0
- gatewaysdk/store/mongo.py +165 -0
- gatewaysdk/store/redis_stream.py +517 -0
- gatewaysdk/store/sqlite.py +3 -0
- gatewaysdk/store/threading.py +370 -0
- gatewaysdk/store/utils.py +142 -0
- gatewaysdk/tracer/__init__.py +14 -0
- gatewaysdk/tracer/base.py +286 -0
- gatewaysdk/tracer/dummy.py +106 -0
- gatewaysdk/tracer/otel.py +559 -0
- gatewaysdk/tracing/__init__.py +110 -0
- gatewaysdk/tracing/api.py +808 -0
- gatewaysdk/tracing/attributes.py +9 -0
- gatewaysdk/tracing/context.py +272 -0
- gatewaysdk/tracing/exporters/__init__.py +10 -0
- gatewaysdk/tracing/exporters/gateway.py +228 -0
- gatewaysdk/tracing/identity.py +288 -0
- gatewaysdk/tracing/init.py +620 -0
- gatewaysdk/tracing/instrumentors/__init__.py +15 -0
- gatewaysdk/tracing/instrumentors/claude_agent_sdk.py +766 -0
- gatewaysdk/tracing/instrumentors/instrumentation_principles.md +294 -0
- gatewaysdk/tracing/instrumentors/registry.py +352 -0
- gatewaysdk/tracing/mapping.py +729 -0
- gatewaysdk/tracing/processors.py +393 -0
- gatewaysdk/tracing/push.py +617 -0
- gatewaysdk/tracing/push_models.py +247 -0
- gatewaysdk/tracing/semconv.py +294 -0
- gatewaysdk/tracing/span_builder.py +356 -0
- gatewaysdk/trainer/__init__.py +6 -0
- gatewaysdk/trainer/init_utils.py +263 -0
- gatewaysdk/trainer/legacy.py +359 -0
- gatewaysdk/trainer/registry.py +12 -0
- gatewaysdk/trainer/trainer.py +638 -0
- gatewaysdk/types/__init__.py +63 -0
- gatewaysdk/types/core.py +556 -0
- gatewaysdk/types/resources.py +204 -0
- gatewaysdk/types/tracer.py +515 -0
- gatewaysdk/types/tracing.py +162 -0
- gatewaysdk/users.py +251 -0
- gatewaysdk/utils/__init__.py +1 -0
- gatewaysdk/utils/id.py +18 -0
- gatewaysdk/utils/metrics.py +1025 -0
- gatewaysdk/utils/otel.py +550 -0
- gatewaysdk/utils/otlp.py +556 -0
- gatewaysdk/utils/redact.py +22 -0
- gatewaysdk/utils/server_launcher.py +1045 -0
- gatewaysdk/utils/system_snapshot.py +90 -0
- gatewaysdk/verl/__init__.py +8 -0
- gatewaysdk/verl/__main__.py +6 -0
- gatewaysdk/verl/async_server.py +46 -0
- gatewaysdk/verl/config.yaml +27 -0
- gatewaysdk/verl/daemon.py +1154 -0
- gatewaysdk/verl/dataset.py +44 -0
- gatewaysdk/verl/entrypoint.py +248 -0
- gatewaysdk/verl/trainer.py +549 -0
- gatewaysdk/world_browser.py +748 -0
- gatewaysdk/world_data.py +453 -0
- gatewaysdk/world_sessions.py +978 -0
- gatewaysdk/world_tasks.py +285 -0
- gatewaysdk/world_tools.py +115 -0
- gatewaysdk/worlds.py +639 -0
- gatewaysdk-0.3.2.dist-info/METADATA +236 -0
- gatewaysdk-0.3.2.dist-info/RECORD +376 -0
- gatewaysdk-0.3.2.dist-info/WHEEL +4 -0
- gatewaysdk-0.3.2.dist-info/entry_points.txt +5 -0
- gatewaysdk-0.3.2.dist-info/licenses/LICENSE +19 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"connector": "jamf",
|
|
3
|
+
"shape": "mixed",
|
|
4
|
+
"label": "subset",
|
|
5
|
+
"authored_by": "connector-template-author (brief: .claude/skills/connector-schema-authoring/briefs/jamf.md)",
|
|
6
|
+
"generated_at": "2026-09-06T22:27:40Z",
|
|
7
|
+
"scope_hash": "sha256:dd428e10ae681def60d56915020efedde639accd5784489de18a7bc8e018ce05",
|
|
8
|
+
"world_sha256": "sha256:09b9f16faad8583bbe2c8b1978da8e2265777f2f840869319c76909c64be7f2d",
|
|
9
|
+
"source": {
|
|
10
|
+
"kind": "docs-embedded-openapi",
|
|
11
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/jamf-pro-api",
|
|
12
|
+
"version": "Jamf Pro API 11.31.0; Classic API 11.28.0",
|
|
13
|
+
"sha256": "2b788374829edc1687adc9e8b55a8e846b5cfaa28a59db1502f404c63726b86d",
|
|
14
|
+
"verified_at": "2026-09-06",
|
|
15
|
+
"note": "Primary evidence is the OpenAPI 3.0 JSON embedded in Jamf's public reference markdown. Jamf's preferred machine-readable declaration is per-instance at https://<instance>.jamfcloud.com/api/schema, but no sandbox instance was available. The top-level digest is the llms.txt index; every used page is pinned separately below and all listed bytes were re-fetched and hashed on 2026-09-06.",
|
|
16
|
+
"pages": [
|
|
17
|
+
{
|
|
18
|
+
"url": "https://developer.jamf.com/jamf-pro/llms.txt",
|
|
19
|
+
"sha256": "2b788374829edc1687adc9e8b55a8e846b5cfaa28a59db1502f404c63726b86d",
|
|
20
|
+
"used_for": "documentation index"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/get_v3-computers-inventory-id.md",
|
|
24
|
+
"version": "11.31.0",
|
|
25
|
+
"sha256": "518c2dd570e814bfa8b6827f0fed6743dfcc6320857888885836537489a0d263",
|
|
26
|
+
"used_for": "ComputerInventoryV3 and retained GENERAL, HARDWARE, OPERATING_SYSTEM, USER_AND_LOCATION section declarations; ComputerSectionV3 values; ApiError; documented 404"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/get_v2-mobile-devices-id.md",
|
|
30
|
+
"version": "11.31.0",
|
|
31
|
+
"sha256": "7740a4df97106f827f6f6420e532283a807e148c9ac02bc7c76feb2710ef99ff",
|
|
32
|
+
"used_for": "MobileDeviceV2 summary read properties and type enum"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/get_v2-mobile-devices-id-detail.md",
|
|
36
|
+
"version": "11.31.0",
|
|
37
|
+
"sha256": "38452ad2b879c4036137b0586eee8048fbd77e746e79cbcda6d492502523df99",
|
|
38
|
+
"used_for": "MobileDeviceDetailsV2 detail read scalar properties"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/get_v1-computer-groups.md",
|
|
42
|
+
"version": "11.31.0",
|
|
43
|
+
"sha256": "2358059ea0094ffdc0574ac73fd6b18a3b50d6c2fb83361bb74086997c33a6ef",
|
|
44
|
+
"used_for": "ComputerGroup read shape"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/get_v3-computer-groups-static-groups-id.md",
|
|
48
|
+
"version": "11.31.0",
|
|
49
|
+
"sha256": "d7b65916abf86916c31cbce04138d32074f154bf6647b756d1e186fd049447e0",
|
|
50
|
+
"used_for": "StaticComputerGroup required id/name and nullable description/siteId"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/put_v3-computer-groups-static-groups-id.md",
|
|
54
|
+
"version": "11.31.0",
|
|
55
|
+
"sha256": "fd0b2dd273f0f74fb0cc85adffdf89c2ede7c4ffc1dba6e71a88e4d096c786fd",
|
|
56
|
+
"used_for": "StaticComputerGroupAssignment.assignments membership evidence"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/post_v3-computer-groups-static-groups.md",
|
|
60
|
+
"version": "11.31.0",
|
|
61
|
+
"sha256": "2755fec17919738bc5af2499c1f136d53dcc0827eada736fc1decc45d8315f0c",
|
|
62
|
+
"used_for": "documented 422 Duplicate group name and 400 responses"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/get_v1-computer-extension-attributes-id.md",
|
|
66
|
+
"version": "11.31.0",
|
|
67
|
+
"sha256": "4f8c40bee779f27926e642d26c3d599238f2630077db8bddce1871642fa413ed",
|
|
68
|
+
"used_for": "ComputerExtensionAttributes declared allOf properties, required blocks, enums, and ApiError shape"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/get_v1-users-id.md",
|
|
72
|
+
"version": "11.31.0",
|
|
73
|
+
"sha256": "3ef642b8eff665d09a3dcca984e6bdae989119fc76eb0371c680830418215046",
|
|
74
|
+
"used_for": "UserInventory plus User.id allOf read shape"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/findpolicies.md",
|
|
78
|
+
"version": "Classic API 11.28.0",
|
|
79
|
+
"sha256": "8426f22ed86f6c053e2a6d2a96304b11cd47d23292c31647db1b4a7101a906ea",
|
|
80
|
+
"used_for": "policy list id_name read form"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/findpoliciesbyid.md",
|
|
84
|
+
"version": "Classic API 11.28.0",
|
|
85
|
+
"sha256": "f6bf8225ec51cbc4600b595dc157268f5311691181611a1d6c49668cd14e95bd",
|
|
86
|
+
"used_for": "policy.general and policy.scope detail declarations and enums"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/findosxconfigurationprofiles.md",
|
|
90
|
+
"version": "Classic API 11.28.0",
|
|
91
|
+
"sha256": "4749a472fb0ca3d6e9d88cad1bf4feba321556d768209d59d4c37fb115732f04",
|
|
92
|
+
"used_for": "configuration-profile list id_name read form"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"url": "https://developer.jamf.com/jamf-pro/reference/findosxconfigurationprofilesbyid.md",
|
|
96
|
+
"version": "Classic API 11.28.0",
|
|
97
|
+
"sha256": "8b952e757ec86b3fdbdfdec97ff0bab2a30aa8c205c251406a51daf4d5162064",
|
|
98
|
+
"used_for": "os_x_configuration_profile.general and .scope detail declarations and enums"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"url": "https://developer.jamf.com/jamf-pro/docs/webhooks-1.md",
|
|
102
|
+
"sha256": "f9cec6b78ded10593c81e261142cc4545595dbf9bd73da3ac8a759069a18be68",
|
|
103
|
+
"used_for": "consulted only; event entities remain outside this eight-entity scope"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
"coverage": {
|
|
108
|
+
"entity_count": 8,
|
|
109
|
+
"recursive_field_count": 373,
|
|
110
|
+
"count_method": "For each declared entity, count every object property reached from its schema after resolving local $ref; descend properties, array items, allOf, anyOf, and oneOf. Repeated paths count independently.",
|
|
111
|
+
"included": "Four computer inventory sections; union of mobile summary/detail scalar fields; groups and membership relationships; policy and configuration-profile list identities plus nested general/scope detail; extension-attribute definitions; users.",
|
|
112
|
+
"excluded": "See scope.toml for section-, field-, and compiler-specific exclusions."
|
|
113
|
+
},
|
|
114
|
+
"errors": {
|
|
115
|
+
"format": "{\"httpStatus\": <int>, \"errors\": [{\"code\", \"description\", \"id\", \"field\"}]}",
|
|
116
|
+
"modelled_as": "$defs/ApiError and $defs/ApiErrorCause retain the Jamf Pro API declaration; handlers raise only statuses/descriptions explicitly documented for their endpoint.",
|
|
117
|
+
"raised_by_handlers": [
|
|
118
|
+
"get_computer -> '404: Specified computer object does not exist.'",
|
|
119
|
+
"create_computer_group -> '422: Duplicate group name.'"
|
|
120
|
+
],
|
|
121
|
+
"note": "Jamf publishes no ApiErrorCause.code vocabulary; the OpenAPI example 8675309 is an example, not an enum, and is not treated as a declared value. Classic API errors are HTML/XML status bodies, not this JSON shape."
|
|
122
|
+
},
|
|
123
|
+
"type_mapping_notes": [
|
|
124
|
+
"OpenAPI nullable: true becomes type [sourceType, null]; no additional nullability is inferred.",
|
|
125
|
+
"OpenAPI format date-time is retained. Unsupported integer int32/int64 format annotations are dropped while integer type and declared bounds remain.",
|
|
126
|
+
"ComputerGeneral.initialEntryDate retains the OpenAPI date format.",
|
|
127
|
+
"Jamf Pro API ids remain strings and Classic API ids remain integers.",
|
|
128
|
+
"Declared enum blocks are copied in vendor order and casing. Examples and prose examples are not promoted to enums."
|
|
129
|
+
],
|
|
130
|
+
"requiredness": {
|
|
131
|
+
"vendor": "Required arrays inside retained OpenAPI schemas are preserved. Jamf Pro inventory, mobile-device, and user response properties have no declared required arrays.",
|
|
132
|
+
"entity_keys": "gateway-world/1 requires direct required non-null keys, so vendor ids are promoted to required at entity roots.",
|
|
133
|
+
"multiple_reads": "MobileDevice properties are the union of summary/detail reads, with only the mandatory entity id required. Classic policy/profile list identity and detail section properties are also a union, with only id required at the entity root.",
|
|
134
|
+
"computer_sections": "The endpoint returns one or several requested sections. general, hardware, operatingSystem, and userAndLocation are optional as whole sections; no section is globally required."
|
|
135
|
+
},
|
|
136
|
+
"tenant_overlay": {
|
|
137
|
+
"required": false,
|
|
138
|
+
"channel": "GET /v1/computer-extension-attributes and mobile-device equivalent, plus per-instance https://<instance>.jamfcloud.com/api/schema",
|
|
139
|
+
"note": "Extension-attribute definitions are in the base; collected values are tenant data and remain outside the shared template."
|
|
140
|
+
},
|
|
141
|
+
"compiler_limitations": [
|
|
142
|
+
"hardware.serialNumber remains nested. Nested uniqueness is supported, but the pinned OpenAPI does not declare serial-number uniqueness, so no constraint is invented.",
|
|
143
|
+
"The Classic list and detail HTTP envelopes differ; entities model the union of record properties and omit envelope-only size fields.",
|
|
144
|
+
"Conditional section selection is represented by independently optional whole section properties because entity roots cannot use composition as an identity workaround.",
|
|
145
|
+
"OpenAPI date is retained for initialEntryDate."
|
|
146
|
+
],
|
|
147
|
+
"unverified": [
|
|
148
|
+
"No per-instance /api/schema was available; public embedded OpenAPI fragments are pinned instead.",
|
|
149
|
+
"No Jamf sandbox or trial credentials were available, so tenant round trip, mutation verification, audit against pulled records, and golden replay were skipped.",
|
|
150
|
+
"No customer or production data is included.",
|
|
151
|
+
"Serial-number, UDID, extension-attribute-name, and username uniqueness are not declared by the pinned OpenAPI and are therefore not asserted. Computer group name uniqueness is retained because the create endpoint explicitly documents Duplicate group name as 422.",
|
|
152
|
+
"computerId in the membership join is a projection name for the member computer id; Jamf supplies assignments as an array of ids rather than join records."
|
|
153
|
+
],
|
|
154
|
+
"fidelity": {
|
|
155
|
+
"label": "subset",
|
|
156
|
+
"mimic_status": "not eligible without a per-instance schema, sandbox round trip, and golden replay",
|
|
157
|
+
"sandbox": "Jamf developer sandbox or trial required; none available",
|
|
158
|
+
"goldens": "none",
|
|
159
|
+
"tenant_round_trip": "skipped"
|
|
160
|
+
},
|
|
161
|
+
"verification": {
|
|
162
|
+
"bundle": "/home/ubuntu/jamf-connector-verify",
|
|
163
|
+
"init": "passed: status ok",
|
|
164
|
+
"compile": "passed: status ok",
|
|
165
|
+
"check": "passed: status ok",
|
|
166
|
+
"domain_hash": "babbc52fe77b577ebeedd2cc2193a39a94fe126826fe75cbe791529cb6e7d831",
|
|
167
|
+
"synthetic_store": "passed: inserted one synthetic row for every entity, resolved both computer-group membership relationships, exercised retained declared enums, and audit returned no violations",
|
|
168
|
+
"field_count": {
|
|
169
|
+
"jamf_computers": 91,
|
|
170
|
+
"jamf_mobile_devices": 31,
|
|
171
|
+
"jamf_computer_groups": 4,
|
|
172
|
+
"jamf_computer_group_members": 2,
|
|
173
|
+
"jamf_policies": 120,
|
|
174
|
+
"jamf_configuration_profiles": 104,
|
|
175
|
+
"jamf_extension_attributes": 12,
|
|
176
|
+
"jamf_users": 9,
|
|
177
|
+
"total": 373
|
|
178
|
+
},
|
|
179
|
+
"pytest_conventions": "not run: python3.12 environment has no pytest module"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Scope of the Jamf Pro model.
|
|
2
|
+
#
|
|
3
|
+
# Hand-authored from the OpenAPI fragments embedded in the pinned developer.jamf.com
|
|
4
|
+
# reference pages (Jamf Pro API 11.31.0, Classic API 11.28.0). There is no importer
|
|
5
|
+
# run behind this file yet. The allowlist and exclusions make a later diff against a
|
|
6
|
+
# tenant's per-instance /api/schema explicit.
|
|
7
|
+
|
|
8
|
+
[source]
|
|
9
|
+
kind = "docs"
|
|
10
|
+
jamf_pro_api_version = "11.31.0"
|
|
11
|
+
classic_api_version = "11.28.0"
|
|
12
|
+
instance_spec = "none" # https://<instance>.jamfcloud.com/api/schema needs an instance
|
|
13
|
+
shape = "mixed"
|
|
14
|
+
evidence_reverified = "2026-09-06"
|
|
15
|
+
|
|
16
|
+
# ---------------------------------------------------------------- entity allowlist
|
|
17
|
+
|
|
18
|
+
[[entities]]
|
|
19
|
+
name = "jamf_computers"
|
|
20
|
+
vendor = "ComputerInventoryV3 (GET /v3/computers-inventory/{id})"
|
|
21
|
+
sections = ["GENERAL", "HARDWARE", "OPERATING_SYSTEM", "USER_AND_LOCATION"]
|
|
22
|
+
primary_key = ["id"]
|
|
23
|
+
unique = []
|
|
24
|
+
note = "The four retained response sections and serialNumber under hardware stay nested. Since `section` can select one or several sections, each section is optional as a whole; fields inside it retain the OpenAPI requiredness (none)."
|
|
25
|
+
|
|
26
|
+
[[entities]]
|
|
27
|
+
name = "jamf_mobile_devices"
|
|
28
|
+
vendor = "MobileDeviceV2 (GET /v2/mobile-devices/{id}) plus MobileDeviceDetailsV2 (GET /v2/mobile-devices/{id}/detail)"
|
|
29
|
+
primary_key = ["id"]
|
|
30
|
+
unique = []
|
|
31
|
+
note = "Properties are the union of the two read forms. Only id is required by the entity key because the OpenAPI declares no response property required; detail-only fields cannot be required of summary records."
|
|
32
|
+
|
|
33
|
+
[[entities]]
|
|
34
|
+
name = "jamf_computer_groups"
|
|
35
|
+
vendor = "ComputerGroup (GET /v1/computer-groups) and StaticComputerGroup"
|
|
36
|
+
primary_key = ["id"]
|
|
37
|
+
unique = [["name"]]
|
|
38
|
+
note = "id/name requiredness comes from StaticComputerGroup; the create endpoint explicitly documents duplicate group names as 422."
|
|
39
|
+
|
|
40
|
+
[[entities]]
|
|
41
|
+
name = "jamf_computer_group_members"
|
|
42
|
+
vendor = "StaticComputerGroupAssignment.assignments (PUT /v3/computer-groups/static-groups/{id}) and GroupMembership.groupId on computer inventory"
|
|
43
|
+
primary_key = ["groupId", "computerId"]
|
|
44
|
+
note = "Jamf carries membership as an array on either side; gateway-world/1 represents the relationship as a join entity. computerId is the projection name for the member computer's id."
|
|
45
|
+
|
|
46
|
+
[[entities]]
|
|
47
|
+
name = "jamf_policies"
|
|
48
|
+
vendor = "id_name from GET /policies plus policy.general and policy.scope from GET /policies/id/{id}"
|
|
49
|
+
primary_key = ["id"]
|
|
50
|
+
note = "The list identity supplies the direct entity key. Detail fields remain under general and scope; they are not hoisted to accommodate the compiler."
|
|
51
|
+
|
|
52
|
+
[[entities]]
|
|
53
|
+
name = "jamf_configuration_profiles"
|
|
54
|
+
vendor = "id_name from GET /osxconfigurationprofiles plus os_x_configuration_profile.general and .scope from GET /osxconfigurationprofiles/id/{id}"
|
|
55
|
+
primary_key = ["id"]
|
|
56
|
+
note = "The list identity supplies the direct entity key. Detail fields remain under general and scope; only the opaque mobileconfig payload is excluded."
|
|
57
|
+
|
|
58
|
+
[[entities]]
|
|
59
|
+
name = "jamf_extension_attributes"
|
|
60
|
+
vendor = "ComputerExtensionAttributes (GET /v1/computer-extension-attributes/{id})"
|
|
61
|
+
primary_key = ["id"]
|
|
62
|
+
unique = []
|
|
63
|
+
note = "Definitions only. Collected values are tenant data and reach a world through the optional overlay. The OpenAPI does not declare name unique."
|
|
64
|
+
|
|
65
|
+
[[entities]]
|
|
66
|
+
name = "jamf_users"
|
|
67
|
+
vendor = "User = UserInventory + id (GET /v1/users/{id})"
|
|
68
|
+
primary_key = ["id"]
|
|
69
|
+
unique = []
|
|
70
|
+
note = "The Jamf Pro API user shape is retained in full. The OpenAPI does not declare username required or unique."
|
|
71
|
+
|
|
72
|
+
# ------------------------------------------------------------------- key handling
|
|
73
|
+
|
|
74
|
+
[key_overrides]
|
|
75
|
+
# Jamf Pro inventory/user response schemas mark ids readOnly and declare no property
|
|
76
|
+
# required. gateway-world/1 requires each primary key to be direct, required, and
|
|
77
|
+
# non-null, so the vendor id is promoted to required for persistence.
|
|
78
|
+
jamf_computers = "id promoted to required; nested hardware.serialNumber uniqueness is not asserted by the pinned OpenAPI"
|
|
79
|
+
jamf_mobile_devices = "id promoted to required; serialNumber uniqueness is not asserted by the pinned OpenAPI"
|
|
80
|
+
jamf_computer_groups = "id and name are already required by StaticComputerGroup"
|
|
81
|
+
jamf_extension_attributes = "id promoted to required; name/dataType/inputType/inventoryDisplayType keep their vendor declarations"
|
|
82
|
+
jamf_users = "id promoted to required"
|
|
83
|
+
jamf_policies = "direct id comes from the documented list id_name shape; detail general.id remains nested"
|
|
84
|
+
jamf_configuration_profiles = "direct id comes from the documented list id_name shape; detail general.id remains nested"
|
|
85
|
+
|
|
86
|
+
[shape_overrides]
|
|
87
|
+
classic_read_forms = "Policy and profile entity properties are the union of list identity and detail sections; requiredness is their supported intersection plus the mandatory entity id."
|
|
88
|
+
serial_uniqueness = "Computer serialNumber remains at hardware.serialNumber. Nested uniqueness is supported, but no constraint is invented because the pinned OpenAPI does not declare one."
|
|
89
|
+
section_scoping = "Computer inventory returns only requested sections. general, hardware, operatingSystem, and userAndLocation are independently optional whole sections."
|
|
90
|
+
|
|
91
|
+
[relationship_hints]
|
|
92
|
+
jamf_computer_group_members = [
|
|
93
|
+
"groupId -> jamf_computer_groups.id",
|
|
94
|
+
"computerId -> jamf_computers.id",
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
[polymorphic]
|
|
98
|
+
fields = []
|
|
99
|
+
|
|
100
|
+
# ----------------------------------------------------------------------- exclusions
|
|
101
|
+
|
|
102
|
+
[exclusions]
|
|
103
|
+
"ComputerInventoryV3 sections outside GENERAL/HARDWARE/OPERATING_SYSTEM/USER_AND_LOCATION" = "Outside the brief's four-section inventory scope; add from the pinned per-instance schema when a use case requires them."
|
|
104
|
+
"ComputerGeneral.extensionAttributes/ComputerHardware.extensionAttributes/ComputerOperatingSystem.extensionAttributes/ComputerUserAndLocation.extensionAttributes" = "Collected tenant extension-attribute values; definitions are modelled separately and values belong in the optional tenant overlay."
|
|
105
|
+
"ComputerGeneral.remoteManagement" = "Contains deprecated managementUsername, documented by Jamf as always null and replaced by the privileged local-admin-password endpoint."
|
|
106
|
+
"MobileDeviceDetailsV2.site/location/groups" = "Nested detail outside the brief's identity/inventory scope."
|
|
107
|
+
"MobileDeviceDetailsV2.extensionAttributes" = "Collected tenant extension-attribute values; excluded from the shared base."
|
|
108
|
+
"MobileDeviceDetailsV2.ios/tvos/watchos/visionos" = "Large per-platform inventory branches are excluded; the declared type discriminator and common scalar inventory fields remain."
|
|
109
|
+
"policy sections other than general/scope" = "Action payloads (packages, scripts, account maintenance, encryption, and user interaction) are outside the records/scope model and may include secrets."
|
|
110
|
+
"os_x_configuration_profile.general.payloads" = "Opaque mobileconfig plist; excluded because gateway-world/1 cannot validate its internal payload contract."
|
|
111
|
+
"os_x_configuration_profile.self_service" = "Presentation configuration outside the records/scope model."
|
|
112
|
+
"Classic /users" = "Superseded by GET /v1/users/{id}, which Jamf marks as full parity; using both would split id types."
|
|
113
|
+
"webhooks" = "Event payloads are documented but no event entity is in this eight-entity scope."
|
|
114
|
+
|
|
115
|
+
[compiler_limitations]
|
|
116
|
+
nested_unique = "Nested scalar uniqueness is supported, but hardware.serialNumber is not declared unique by the pinned OpenAPI and is therefore not asserted."
|
|
117
|
+
conditional_sections = "The contract has no conditional-required construct suitable for entity roots; requested computer sections are therefore represented as independently optional whole properties."
|
|
118
|
+
openapi_date = "OpenAPI date is retained as format date; ComputerGeneral.initialEntryDate is modelled."
|
|
119
|
+
classic_envelopes = "Classic list and detail reads have different wrappers. Entity properties preserve the union of their record forms, not HTTP envelope fields such as size."
|
|
120
|
+
|
|
121
|
+
[verification]
|
|
122
|
+
sandbox = "not available"
|
|
123
|
+
tenant_round_trip = "skipped: no Jamf developer sandbox or trial credentials"
|
|
124
|
+
goldens = "skipped: no consenting tenant capture; no customer data is included"
|
|
125
|
+
synthetic_fixture = "not shipped: connector template layout does not support data files; ephemeral synthetic rows were inserted for all eight entities in /home/ubuntu/jamf-depth-verification-2"
|
|
126
|
+
schema_compile_check = "passed: init, compile, and check returned status ok with domain hash 2c544719f091a190235f91e4e51b86cee3956975238b3eaf38a15a0d32f383a5"
|
|
127
|
+
store_audit = "passed: one synthetic row per entity, both membership relationships resolved, declared enums validated, audit returned no violations"
|
|
128
|
+
label = "subset"
|