devrev-Python-SDK 3.0.4__tar.gz → 3.1.1__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.
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/PKG-INFO +4 -16
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/README.md +3 -15
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/index.md +0 -2
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/models/index.md +0 -1
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/models/works.md +0 -3
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/index.md +0 -1
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/webhooks.md +2 -2
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/works.md +2 -29
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/changelog.md +25 -11
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/examples/advanced.md +2 -2
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/examples/integrations.md +1 -1
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/mcp/tools-reference.md +27 -2
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/cloud_functions/main.py +3 -3
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/mkdocs.yml +0 -2
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/pyproject.toml +1 -1
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/client.py +0 -16
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/__init__.py +0 -11
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/works.py +0 -42
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/__init__.py +0 -4
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/works.py +0 -20
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/server.py +1 -0
- devrev_python_sdk-3.1.1/src/devrev_mcp/tools/webhooks.py +153 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/utils/don_id.py +2 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/conftest.py +8 -0
- devrev_python_sdk-3.1.1/tests/unit/mcp/test_tools_webhooks.py +207 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/conftest.py +1 -1
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_webhooks.py +1 -1
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_works.py +0 -112
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_client.py +0 -13
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/uv.lock +4 -4
- devrev_python_sdk-3.0.4/.github/workflows/claude.yml +0 -50
- devrev_python_sdk-3.0.4/docs/api/models/survey-responses.md +0 -47
- devrev_python_sdk-3.0.4/docs/api/services/survey-responses.md +0 -83
- devrev_python_sdk-3.0.4/src/devrev/models/survey_responses.py +0 -77
- devrev_python_sdk-3.0.4/src/devrev/services/survey_responses.py +0 -122
- devrev_python_sdk-3.0.4/tests/unit/services/test_survey_responses.py +0 -129
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/bug-fixer.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/builder.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/documentation.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/foreman.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/pr-review-boss.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/release-manager.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/simplifier.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/agents/tester.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/commands/foreman-work.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/commands/release-prepare.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/commands/review-start.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/commands/simplify-code.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/code-quality.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/data-modeling.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/devrev-sdk.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/git-workflow.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/pull-requests.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/python-development.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/security.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.augment/rules/testing.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.dockerignore +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.env.sample +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/ISSUE_TEMPLATE/article-artifact-simplification.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/dependabot.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/pull_request_template.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/api-check.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/ci.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/claude-code-review.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/deploy.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/docs.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/integration-tests.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/release.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.github/workflows/sync-openapi.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.gitignore +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/.pre-commit-config.yaml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/CLAUDE.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/CODE_OF_CONDUCT.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/CONTRIBUTING.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/DEPRECATIONS.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/Dockerfile +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/KNOWN_ISSUES.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/OPENAPI_SPEC_DISCREPANCIES.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/SECURITY.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/augment-mcp-config-remote.json +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/augment-mcp-config.json +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/augment-settings.json +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/benchmarks/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/benchmarks/bench_http_client.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/benchmarks/bench_models.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/benchmarks/bench_pagination.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/benchmarks/conftest.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/context7.json +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/audit-logging-setup.sh +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/cloudbuild.yaml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/monitoring/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/monitoring/alert-policies.yaml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/monitoring/dashboard.json +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/monitoring/validate-config.sh +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/deploy/service.yaml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docker-compose.yml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/brands.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/engagements.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/incidents.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/index.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/question-answers.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/recommendations.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/search.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta/uoms.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/beta-api-differences.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/client.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/config.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/exceptions.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/models/accounts.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/models/base.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/models/users.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/accounts.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/articles.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/code-changes.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/conversations.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/dev-users.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/groups.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/links.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/parts.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/rev-users.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/slas.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/tags.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/api/services/timeline-entries.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/examples/basic.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/examples/beta-features.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/examples/index.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/getting-started/authentication.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/getting-started/index.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/getting-started/installation.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/getting-started/quickstart.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/beta-api.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/compatibility.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/configuration.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/error-handling.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/github-actions-setup.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/index.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/logging.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/pagination.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/sync-vs-async.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/testing.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/version-support.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/guides/write-integration-testing-strategy.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/hooks/copy_llms.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/index.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/mcp/deployment.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/mcp/index.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/mcp/quickstart.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/docs/stylesheets/extra.css +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/basic/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/basic/async_example.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/basic/create_work.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/basic/error_handling.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/basic/list_accounts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/basic/pagination.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/basic/search_users.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/cloud_functions/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/cloud_functions/requirements.txt +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/fastapi/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/fastapi/main.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/fastapi/requirements.txt +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/flask/README.md +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/flask/app.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/flask/requirements.txt +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/llms-ctx-full.txt +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/llms-ctx.txt +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/llms-mcp.txt +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/llms.txt +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/openapi-beta.yaml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/openapi-public.yaml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/openapi-spec-corrections.yaml +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/scripts/build_ai_docs.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/scripts/debug_articles.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/scripts/setup-github-secrets.sh +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/config.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/exceptions.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/accounts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/articles.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/artifacts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/base.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/brands.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/code_changes.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/conversations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/dev_users.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/engagements.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/groups.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/incidents.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/links.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/notifications.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/parts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/preferences.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/question_answers.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/recommendations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/rev_orgs.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/rev_users.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/search.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/slas.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/sync.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/tags.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/tasks.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/timeline_entries.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/timeline_events.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/track_events.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/uoms.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/webhooks.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/models/widgets.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/py.typed +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/_pagination.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/accounts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/articles.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/artifacts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/base.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/brands.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/code_changes.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/conversations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/dev_users.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/engagements.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/groups.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/incidents.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/links.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/notifications.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/parts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/preferences.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/question_answers.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/recommendations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/rev_orgs.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/rev_users.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/search.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/slas.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/tags.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/timeline_entries.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/track_events.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/uoms.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/services/webhooks.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/utils/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/utils/content_converter.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/utils/deprecation.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/utils/http.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/utils/logging.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev/utils/pagination.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/__main__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/config.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/middleware/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/middleware/audit.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/middleware/auth.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/middleware/health.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/middleware/rate_limit.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/prompts/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/prompts/escalation.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/prompts/investigate.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/prompts/response.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/prompts/summarize.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/prompts/triage.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/account.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/article.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/conversation.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/part.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/server_info.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/ticket.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/resources/user.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/accounts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/articles.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/conversations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/engagements.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/groups.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/incidents.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/links.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/parts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/question_answers.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/recommendations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/rev_orgs.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/search.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/server_info.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/slas.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/tags.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/timeline.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/users.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/tools/works.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/utils/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/utils/errors.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/utils/formatting.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/src/devrev_mcp/utils/pagination.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/conftest.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/conftest.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_accounts_e2e.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_all_readonly_endpoints.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_articles_lifecycle.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_backwards_compatibility.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_contacts_e2e.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_core_services_phase1.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_date_filtering.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_extended_services_phase2.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_get_endpoints.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_issues_e2e.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_kb_articles_e2e.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_mcp_articles.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_ping.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_question_answers_e2e.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_readonly_endpoints.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_specialized_services_phase3.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_tickets_e2e.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/test_write_operations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/utils/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/utils/cleanup.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/utils/constants.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/integration/utils/data_manager.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/performance/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/performance/test_articles_performance.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_audit.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_config.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_phase4_transport.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_prompts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_resources.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_server_info.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_accounts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_articles.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_conversations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_engagements.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_groups.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_incidents.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_links.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_parts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_question_answers.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_recommendations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_search.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_slas.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_tags.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_timeline.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_users.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_tools_works.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/mcp/test_utils.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/models/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/models/test_user_state_regression.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/__init__.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_articles.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_async_services.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_brands.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_code_changes.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_conversations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_engagements.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_groups.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_incidents.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_links.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_notifications.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_pagination.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_parts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_preferences.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_question_answers.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_recommendations.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_search.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_slas.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_tags.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_timeline_entries.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_track_events.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/services/test_uoms.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_articles_unified.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_artifacts.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_backward_compatibility.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_base_service.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_config.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_content_converter.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_deprecation.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_don_id_validation.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_error_handling.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_exceptions.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_http.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_logging.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_pagination.py +0 -0
- {devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/tests/unit/test_rev_orgs.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devrev-Python-SDK
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.1.1
|
|
4
4
|
Summary: A modern, type-safe Python SDK for the DevRev API
|
|
5
5
|
Project-URL: Homepage, https://github.com/mgmonteleone/py-dev-rev
|
|
6
6
|
Project-URL: Documentation, https://github.com/mgmonteleone/py-dev-rev
|
|
@@ -75,7 +75,7 @@ Description-Content-Type: text/markdown
|
|
|
75
75
|
|
|
76
76
|
# py-devrev
|
|
77
77
|
|
|
78
|
-
A modern, type-safe Python SDK for the DevRev API.
|
|
78
|
+
A modern, type-safe Python SDK and MCP for the DevRev API.
|
|
79
79
|
|
|
80
80
|
[](https://www.augmentcode.com/)
|
|
81
81
|
[](https://pypi.org/project/devrev-Python-SDK/)
|
|
@@ -159,7 +159,7 @@ This SDK is generated and maintained from the official DevRev OpenAPI specificat
|
|
|
159
159
|
|
|
160
160
|
### MCP Server (AI Integration)
|
|
161
161
|
|
|
162
|
-
- ✅ **
|
|
162
|
+
- ✅ **83+ MCP Tools** — Full CRUD for tickets, accounts, users, articles, webhooks, and all DevRev resources
|
|
163
163
|
- ✅ **7 Resource Templates** — `devrev://` URI scheme for AI-accessible data browsing
|
|
164
164
|
- ✅ **8 Workflow Prompts** — Pre-built triage, escalation, investigation, and reporting workflows
|
|
165
165
|
- ✅ **3 Transport Modes** — stdio (local), Streamable HTTP (production), SSE (legacy)
|
|
@@ -215,17 +215,6 @@ for account in accounts:
|
|
|
215
215
|
work = client.works.get(id="don:core:...")
|
|
216
216
|
print(f"Work: {work.title} - Status: {work.stage.name}")
|
|
217
217
|
|
|
218
|
-
# Ticket integrations can read optional account/sentiment/SLA fields
|
|
219
|
-
ticket = client.works.get(id="don:core:dvrv-us-1:devo/1:ticket/123")
|
|
220
|
-
print(ticket.rev_org, ticket.account, ticket.needs_response)
|
|
221
|
-
|
|
222
|
-
# Use a supported raw escape hatch when the API returns newer fields
|
|
223
|
-
raw_ticket = client.works.get_raw(id="don:core:dvrv-us-1:devo/1:ticket/123")
|
|
224
|
-
print(raw_ticket["work"].keys())
|
|
225
|
-
|
|
226
|
-
# List survey/CSAT responses for a ticket without using private _http
|
|
227
|
-
survey_responses = client.survey_responses.list(object_id=ticket.id)
|
|
228
|
-
|
|
229
218
|
# Create a new ticket
|
|
230
219
|
ticket = client.works.create(
|
|
231
220
|
title="Bug: Login page not loading",
|
|
@@ -308,7 +297,6 @@ The SDK provides complete coverage of all 209 DevRev public API endpoints, organ
|
|
|
308
297
|
|---------|-----------|-------------|
|
|
309
298
|
| **Articles** | 5 | Knowledge base articles |
|
|
310
299
|
| **Conversations** | 5 | Customer conversations |
|
|
311
|
-
| **Survey Responses** | 1 | Survey and CSAT response listing |
|
|
312
300
|
| **Timeline Entries** | 5 | Activity timeline management |
|
|
313
301
|
| **Tags** | 5 | Tagging and categorization |
|
|
314
302
|
|
|
@@ -737,7 +725,7 @@ The DevRev MCP Server exposes the full DevRev platform as [Model Context Protoco
|
|
|
737
725
|
|
|
738
726
|
### MCP Server Features
|
|
739
727
|
|
|
740
|
-
- **
|
|
728
|
+
- **83+ MCP Tools** — Full CRUD for tickets, accounts, users, conversations, articles, parts, tags, groups, timeline, links, SLAs, webhooks, plus beta tools (search, recommendations, incidents, engagements)
|
|
741
729
|
- **7 Resource Templates** — `devrev://` URI scheme for browsing tickets, accounts, articles, users, parts, conversations
|
|
742
730
|
- **8 Workflow Prompts** — Triage, draft response, escalate, summarize account, investigate, weekly report, find similar, onboard customer
|
|
743
731
|
- **3 Transports** — stdio (local dev), Streamable HTTP (production), SSE (legacy)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# py-devrev
|
|
2
2
|
|
|
3
|
-
A modern, type-safe Python SDK for the DevRev API.
|
|
3
|
+
A modern, type-safe Python SDK and MCP for the DevRev API.
|
|
4
4
|
|
|
5
5
|
[](https://www.augmentcode.com/)
|
|
6
6
|
[](https://pypi.org/project/devrev-Python-SDK/)
|
|
@@ -84,7 +84,7 @@ This SDK is generated and maintained from the official DevRev OpenAPI specificat
|
|
|
84
84
|
|
|
85
85
|
### MCP Server (AI Integration)
|
|
86
86
|
|
|
87
|
-
- ✅ **
|
|
87
|
+
- ✅ **83+ MCP Tools** — Full CRUD for tickets, accounts, users, articles, webhooks, and all DevRev resources
|
|
88
88
|
- ✅ **7 Resource Templates** — `devrev://` URI scheme for AI-accessible data browsing
|
|
89
89
|
- ✅ **8 Workflow Prompts** — Pre-built triage, escalation, investigation, and reporting workflows
|
|
90
90
|
- ✅ **3 Transport Modes** — stdio (local), Streamable HTTP (production), SSE (legacy)
|
|
@@ -140,17 +140,6 @@ for account in accounts:
|
|
|
140
140
|
work = client.works.get(id="don:core:...")
|
|
141
141
|
print(f"Work: {work.title} - Status: {work.stage.name}")
|
|
142
142
|
|
|
143
|
-
# Ticket integrations can read optional account/sentiment/SLA fields
|
|
144
|
-
ticket = client.works.get(id="don:core:dvrv-us-1:devo/1:ticket/123")
|
|
145
|
-
print(ticket.rev_org, ticket.account, ticket.needs_response)
|
|
146
|
-
|
|
147
|
-
# Use a supported raw escape hatch when the API returns newer fields
|
|
148
|
-
raw_ticket = client.works.get_raw(id="don:core:dvrv-us-1:devo/1:ticket/123")
|
|
149
|
-
print(raw_ticket["work"].keys())
|
|
150
|
-
|
|
151
|
-
# List survey/CSAT responses for a ticket without using private _http
|
|
152
|
-
survey_responses = client.survey_responses.list(object_id=ticket.id)
|
|
153
|
-
|
|
154
143
|
# Create a new ticket
|
|
155
144
|
ticket = client.works.create(
|
|
156
145
|
title="Bug: Login page not loading",
|
|
@@ -233,7 +222,6 @@ The SDK provides complete coverage of all 209 DevRev public API endpoints, organ
|
|
|
233
222
|
|---------|-----------|-------------|
|
|
234
223
|
| **Articles** | 5 | Knowledge base articles |
|
|
235
224
|
| **Conversations** | 5 | Customer conversations |
|
|
236
|
-
| **Survey Responses** | 1 | Survey and CSAT response listing |
|
|
237
225
|
| **Timeline Entries** | 5 | Activity timeline management |
|
|
238
226
|
| **Tags** | 5 | Tagging and categorization |
|
|
239
227
|
|
|
@@ -662,7 +650,7 @@ The DevRev MCP Server exposes the full DevRev platform as [Model Context Protoco
|
|
|
662
650
|
|
|
663
651
|
### MCP Server Features
|
|
664
652
|
|
|
665
|
-
- **
|
|
653
|
+
- **83+ MCP Tools** — Full CRUD for tickets, accounts, users, conversations, articles, parts, tags, groups, timeline, links, SLAs, webhooks, plus beta tools (search, recommendations, incidents, engagements)
|
|
666
654
|
- **7 Resource Templates** — `devrev://` URI scheme for browsing tickets, accounts, articles, users, parts, conversations
|
|
667
655
|
- **8 Workflow Prompts** — Triage, draft response, escalate, summarize account, investigate, weekly report, find similar, onboard customer
|
|
668
656
|
- **3 Transports** — stdio (local dev), Streamable HTTP (production), SSE (legacy)
|
|
@@ -44,7 +44,6 @@ All API operations are organized into service classes:
|
|
|
44
44
|
| [Parts](services/parts.md) | Product components | 5 |
|
|
45
45
|
| [Articles](services/articles.md) | Knowledge base | 5 |
|
|
46
46
|
| [Conversations](services/conversations.md) | Customer conversations | 5 |
|
|
47
|
-
| [Survey Responses](services/survey-responses.md) | Survey and CSAT responses | 1 |
|
|
48
47
|
| [Tags](services/tags.md) | Categorization | 5 |
|
|
49
48
|
| [Groups](services/groups.md) | User groups | 6 |
|
|
50
49
|
| [Webhooks](services/webhooks.md) | Event notifications | 6 |
|
|
@@ -78,7 +77,6 @@ Request and response models:
|
|
|
78
77
|
|--------|-------------|
|
|
79
78
|
| [Base](models/base.md) | Common base classes |
|
|
80
79
|
| [Accounts](models/accounts.md) | Account models |
|
|
81
|
-
| [Survey Responses](models/survey-responses.md) | Survey response models |
|
|
82
80
|
| [Works](models/works.md) | Work item models |
|
|
83
81
|
| [Users](models/users.md) | User models |
|
|
84
82
|
|
|
@@ -30,7 +30,6 @@ Models for specific resources:
|
|
|
30
30
|
| Resource | Description |
|
|
31
31
|
|----------|-------------|
|
|
32
32
|
| [Accounts](accounts.md) | Customer account models |
|
|
33
|
-
| [Survey Responses](survey-responses.md) | Survey response list and payload models |
|
|
34
33
|
| [Works](works.md) | Work item models (tickets, issues) |
|
|
35
34
|
| [Users](users.md) | User models (dev and rev users) |
|
|
36
35
|
|
|
@@ -111,9 +111,6 @@ print(f"Stage: {work.stage.name if work.stage else 'N/A'}")
|
|
|
111
111
|
|
|
112
112
|
if work.type == WorkType.TICKET:
|
|
113
113
|
print(f"Severity: {work.severity}")
|
|
114
|
-
print(f"Account: {work.account}")
|
|
115
|
-
print(f"Rev org: {work.rev_org}")
|
|
116
|
-
print(f"Needs response: {work.needs_response}")
|
|
117
114
|
elif work.type == WorkType.ISSUE:
|
|
118
115
|
print(f"Priority: {work.priority}")
|
|
119
116
|
```
|
|
@@ -36,7 +36,6 @@ client.dev_users # DevUsersService
|
|
|
36
36
|
|---------|-------------|-----------|
|
|
37
37
|
| **Articles** | Knowledge base articles with unified content management | [articles](articles.md) |
|
|
38
38
|
| **Conversations** | Customer conversations | [conversations](conversations.md) |
|
|
39
|
-
| **Survey Responses** | Survey and CSAT responses | [survey-responses](survey-responses.md) |
|
|
40
39
|
| **Tags** | Categorization | [tags](tags.md) |
|
|
41
40
|
| **Timeline Entries** | Activity tracking | [timeline-entries](timeline-entries.md) |
|
|
42
41
|
|
|
@@ -35,7 +35,7 @@ import os
|
|
|
35
35
|
|
|
36
36
|
response = client.webhooks.create(
|
|
37
37
|
url="https://your-server.com/webhooks/devrev",
|
|
38
|
-
event_types=["
|
|
38
|
+
event_types=["work_created", "work_updated"],
|
|
39
39
|
secret=os.environ["WEBHOOK_SECRET"], # Never hardcode!
|
|
40
40
|
)
|
|
41
41
|
print(f"Created: {response.webhook.id}")
|
|
@@ -46,7 +46,7 @@ print(f"Created: {response.webhook.id}")
|
|
|
46
46
|
```python
|
|
47
47
|
response = client.webhooks.update(
|
|
48
48
|
id="don:integration:dvrv-us-1:devo/1:webhook/123",
|
|
49
|
-
event_types=["
|
|
49
|
+
event_types=["work_created", "work_updated", "work_deleted"],
|
|
50
50
|
)
|
|
51
51
|
```
|
|
52
52
|
|
|
@@ -13,7 +13,6 @@ issues (engineering), and tasks.
|
|
|
13
13
|
members:
|
|
14
14
|
- list
|
|
15
15
|
- get
|
|
16
|
-
- get_raw
|
|
17
16
|
- create
|
|
18
17
|
- update
|
|
19
18
|
- delete
|
|
@@ -58,39 +57,13 @@ response = client.works.list(
|
|
|
58
57
|
### Get Work Item
|
|
59
58
|
|
|
60
59
|
```python
|
|
61
|
-
|
|
60
|
+
response = client.works.get(id="don:core:dvrv-us-1:devo/1:ticket/123")
|
|
61
|
+
work = response.work
|
|
62
62
|
print(f"Title: {work.title}")
|
|
63
63
|
print(f"Type: {work.type}")
|
|
64
64
|
print(f"Stage: {work.stage.name if work.stage else 'N/A'}")
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
### Get Raw Work Payload
|
|
68
|
-
|
|
69
|
-
Use `get_raw` when the REST API returns a newly-added field that is not yet
|
|
70
|
-
modeled by the typed `Work` object. This keeps callers on a supported SDK API
|
|
71
|
-
instead of relying on the private `_http` transport.
|
|
72
|
-
|
|
73
|
-
```python
|
|
74
|
-
payload = client.works.get_raw(id="don:core:dvrv-us-1:devo/1:ticket/123")
|
|
75
|
-
raw_work = payload["work"]
|
|
76
|
-
print(raw_work.get("rev_org"))
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Ticket Account Association
|
|
80
|
-
|
|
81
|
-
For tickets, the typed `Work` model now includes optional account-association
|
|
82
|
-
fields when the API returns them. Prefer the typed fields first, and use
|
|
83
|
-
`get_raw` only as a fallback for workspace-specific or newly-added fields.
|
|
84
|
-
|
|
85
|
-
```python
|
|
86
|
-
ticket = client.works.get(id="don:core:dvrv-us-1:devo/1:ticket/123")
|
|
87
|
-
|
|
88
|
-
if ticket.rev_org:
|
|
89
|
-
print(f"Ticket rev org: {ticket.rev_org}")
|
|
90
|
-
if ticket.account:
|
|
91
|
-
print(f"Ticket account: {ticket.account}")
|
|
92
|
-
```
|
|
93
|
-
|
|
94
67
|
### Create Ticket
|
|
95
68
|
|
|
96
69
|
```python
|
|
@@ -13,21 +13,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
13
|
|
|
14
14
|
### Fixed
|
|
15
15
|
|
|
16
|
-
## [3.
|
|
16
|
+
## [3.1.1] - 2026-06-16
|
|
17
17
|
|
|
18
|
-
###
|
|
18
|
+
### Changed
|
|
19
19
|
|
|
20
|
-
- **
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
- **Webhook event-type examples reconciled to underscore form** (CSS-1042) —
|
|
21
|
+
Pre-existing examples and docs that used the dotted DevRev webhook
|
|
22
|
+
event-type form (`work.created`) now use the canonical underscore form
|
|
23
|
+
(`work_created`, `work_updated`, `work_deleted`, `conversation_created`),
|
|
24
|
+
matching the form DevRev sends in webhook payloads and the form already used
|
|
25
|
+
by the README, SDK docs, and the webhooks MCP advisory. This corrects a
|
|
26
|
+
latent bug in the Google Cloud Functions example, whose handler compared the
|
|
27
|
+
incoming payload `type` against dotted strings that never matched.
|
|
28
|
+
Docs/examples only; no SDK or MCP behavior change.
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
## [3.1.0] - 2026-06-16
|
|
29
31
|
|
|
30
|
-
###
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- **Webhook management MCP tools** (CSS-1041) — New `devrev_webhooks_*` MCP
|
|
35
|
+
tools exposing the existing `WebhooksService` through the MCP server:
|
|
36
|
+
`devrev_webhooks_list` and `devrev_webhooks_get` (read-only), plus
|
|
37
|
+
`devrev_webhooks_create`, `devrev_webhooks_update`, and
|
|
38
|
+
`devrev_webhooks_delete` (registered only when destructive tools are
|
|
39
|
+
enabled). The module follows the established tool conventions (DON ID
|
|
40
|
+
validation, paginated list responses, `WebhookStatus` resolution on update)
|
|
41
|
+
and is registered in the core (non-beta) tool block. Documentation in
|
|
42
|
+
`docs/mcp/tools-reference.md` now covers all five tools plus an advisory
|
|
43
|
+
section on event types, target URL requirements, the signing `secret`, and
|
|
44
|
+
the webhook status lifecycle.
|
|
31
45
|
|
|
32
46
|
## [3.0.1] - 2026-04-22
|
|
33
47
|
|
|
@@ -123,11 +123,11 @@ class WebhookHandler:
|
|
|
123
123
|
# Usage example
|
|
124
124
|
webhook = WebhookHandler(secret="your-webhook-secret")
|
|
125
125
|
|
|
126
|
-
@webhook.on("
|
|
126
|
+
@webhook.on("work_created")
|
|
127
127
|
def handle_work_created(data):
|
|
128
128
|
print(f"New work item: {data['work']['title']}")
|
|
129
129
|
|
|
130
|
-
@webhook.on("
|
|
130
|
+
@webhook.on("work_updated")
|
|
131
131
|
def handle_work_updated(data):
|
|
132
132
|
print(f"Work updated: {data['work']['id']}")
|
|
133
133
|
```
|
|
@@ -121,7 +121,7 @@ def handle_webhook(request: Request):
|
|
|
121
121
|
data = request.get_json()
|
|
122
122
|
event_type = data.get("type")
|
|
123
123
|
|
|
124
|
-
if event_type == "
|
|
124
|
+
if event_type == "work_created":
|
|
125
125
|
work = data.get("work", {})
|
|
126
126
|
print(f"New work item: {work.get('title')}")
|
|
127
127
|
|
|
@@ -6,7 +6,7 @@ icon: material/tools
|
|
|
6
6
|
|
|
7
7
|
Complete reference of all MCP capabilities provided by the DevRev MCP Server.
|
|
8
8
|
|
|
9
|
-
## Tools (
|
|
9
|
+
## Tools (88+)
|
|
10
10
|
|
|
11
11
|
Tools are the primary way AI assistants interact with DevRev. Each tool maps to one or more DevRev API endpoints.
|
|
12
12
|
|
|
@@ -148,12 +148,37 @@ issues (engineering), and tasks.
|
|
|
148
148
|
|
|
149
149
|
### Webhooks
|
|
150
150
|
|
|
151
|
+
Webhooks deliver DevRev events to an external HTTPS endpoint. Each webhook has a
|
|
152
|
+
target `url`, an optional list of `event_types` to subscribe to (defaults to all
|
|
153
|
+
events), and an optional `secret` used to sign payloads so the receiver can
|
|
154
|
+
verify authenticity. A webhook's `status` moves through `unverified` → `active`
|
|
155
|
+
once DevRev confirms the endpoint, and can be set to `inactive` to pause
|
|
156
|
+
delivery.
|
|
157
|
+
|
|
151
158
|
| Tool | Description |
|
|
152
159
|
|------|-------------|
|
|
153
160
|
| `devrev_webhooks_list` | List webhooks |
|
|
154
161
|
| `devrev_webhooks_get` | Get webhook details |
|
|
155
162
|
| `devrev_webhooks_create` | Create a webhook |
|
|
156
|
-
| `devrev_webhooks_update` | Update a webhook |
|
|
163
|
+
| `devrev_webhooks_update` | Update a webhook (url, event types, status) |
|
|
164
|
+
| `devrev_webhooks_delete` | Delete a webhook |
|
|
165
|
+
|
|
166
|
+
**Managing webhooks**
|
|
167
|
+
|
|
168
|
+
- **Target URL** must be a publicly reachable HTTPS endpoint that responds to
|
|
169
|
+
DevRev's verification handshake; until it does, the webhook stays
|
|
170
|
+
`unverified` and no events are delivered.
|
|
171
|
+
- **Event types** scope which events are sent. Omit `event_types` on create to
|
|
172
|
+
receive all event types, or pass a specific list (e.g. `work_created`,
|
|
173
|
+
`work_updated`) to narrow delivery.
|
|
174
|
+
- **Secret** is a shared signing key — store it as a secret on the receiving
|
|
175
|
+
service and use it to verify each payload's signature. Never log or commit it.
|
|
176
|
+
- **Status lifecycle**: `unverified` (awaiting handshake) → `active` (delivering)
|
|
177
|
+
↔ `inactive` (paused). Use `devrev_webhooks_update` with `status` to pause or
|
|
178
|
+
resume a webhook.
|
|
179
|
+
- **Typical workflow**: `devrev_webhooks_create` (register the endpoint) → verify
|
|
180
|
+
the endpoint so it becomes `active` → `devrev_webhooks_list` / `devrev_webhooks_get`
|
|
181
|
+
to confirm configuration → `devrev_webhooks_delete` when it is no longer needed.
|
|
157
182
|
|
|
158
183
|
### Beta Tools
|
|
159
184
|
|
{devrev_python_sdk-3.0.4 → devrev_python_sdk-3.1.1}/examples/integrations/cloud_functions/main.py
RENAMED
|
@@ -41,17 +41,17 @@ def handle_webhook(request: Request) -> tuple[dict[str, Any], int]:
|
|
|
41
41
|
print(f"Received webhook: {event_type}")
|
|
42
42
|
|
|
43
43
|
# Process different event types
|
|
44
|
-
if event_type == "
|
|
44
|
+
if event_type == "work_created":
|
|
45
45
|
work = data.get("work", {})
|
|
46
46
|
print(f"New work item created: {work.get('title')}")
|
|
47
47
|
# Add your processing logic here
|
|
48
48
|
|
|
49
|
-
elif event_type == "
|
|
49
|
+
elif event_type == "work_updated":
|
|
50
50
|
work = data.get("work", {})
|
|
51
51
|
print(f"Work item updated: {work.get('id')}")
|
|
52
52
|
# Add your processing logic here
|
|
53
53
|
|
|
54
|
-
elif event_type == "
|
|
54
|
+
elif event_type == "conversation_created":
|
|
55
55
|
conv = data.get("conversation", {})
|
|
56
56
|
print(f"New conversation: {conv.get('id')}")
|
|
57
57
|
# Add your processing logic here
|
|
@@ -169,7 +169,6 @@ nav:
|
|
|
169
169
|
- Parts: api/services/parts.md
|
|
170
170
|
- Articles: api/services/articles.md
|
|
171
171
|
- Conversations: api/services/conversations.md
|
|
172
|
-
- Survey Responses: api/services/survey-responses.md
|
|
173
172
|
- Tags: api/services/tags.md
|
|
174
173
|
- Groups: api/services/groups.md
|
|
175
174
|
- Webhooks: api/services/webhooks.md
|
|
@@ -181,7 +180,6 @@ nav:
|
|
|
181
180
|
- api/models/index.md
|
|
182
181
|
- Base: api/models/base.md
|
|
183
182
|
- Accounts: api/models/accounts.md
|
|
184
|
-
- Survey Responses: api/models/survey-responses.md
|
|
185
183
|
- Works: api/models/works.md
|
|
186
184
|
- Users: api/models/users.md
|
|
187
185
|
- Examples:
|
|
@@ -42,10 +42,6 @@ from devrev.services.rev_orgs import AsyncRevOrgsService, RevOrgsService
|
|
|
42
42
|
from devrev.services.rev_users import AsyncRevUsersService, RevUsersService
|
|
43
43
|
from devrev.services.search import AsyncSearchService, SearchService
|
|
44
44
|
from devrev.services.slas import AsyncSlasService, SlasService
|
|
45
|
-
from devrev.services.survey_responses import (
|
|
46
|
-
AsyncSurveyResponsesService,
|
|
47
|
-
SurveyResponsesService,
|
|
48
|
-
)
|
|
49
45
|
from devrev.services.tags import AsyncTagsService, TagsService
|
|
50
46
|
from devrev.services.timeline_entries import (
|
|
51
47
|
AsyncTimelineEntriesService,
|
|
@@ -168,7 +164,6 @@ class DevRevClient:
|
|
|
168
164
|
self._rev_orgs = RevOrgsService(self._http)
|
|
169
165
|
self._rev_users = RevUsersService(self._http)
|
|
170
166
|
self._slas = SlasService(self._http)
|
|
171
|
-
self._survey_responses = SurveyResponsesService(self._http)
|
|
172
167
|
self._tags = TagsService(self._http)
|
|
173
168
|
self._timeline_entries = TimelineEntriesService(self._http)
|
|
174
169
|
self._webhooks = WebhooksService(self._http)
|
|
@@ -264,11 +259,6 @@ class DevRevClient:
|
|
|
264
259
|
"""Access the SLAs service."""
|
|
265
260
|
return self._slas
|
|
266
261
|
|
|
267
|
-
@property
|
|
268
|
-
def survey_responses(self) -> SurveyResponsesService:
|
|
269
|
-
"""Access the Survey Responses service."""
|
|
270
|
-
return self._survey_responses
|
|
271
|
-
|
|
272
262
|
@property
|
|
273
263
|
def tags(self) -> TagsService:
|
|
274
264
|
"""Access the Tags service."""
|
|
@@ -502,7 +492,6 @@ class AsyncDevRevClient:
|
|
|
502
492
|
self._rev_orgs = AsyncRevOrgsService(self._http)
|
|
503
493
|
self._rev_users = AsyncRevUsersService(self._http)
|
|
504
494
|
self._slas = AsyncSlasService(self._http)
|
|
505
|
-
self._survey_responses = AsyncSurveyResponsesService(self._http)
|
|
506
495
|
self._tags = AsyncTagsService(self._http)
|
|
507
496
|
self._timeline_entries = AsyncTimelineEntriesService(self._http)
|
|
508
497
|
self._webhooks = AsyncWebhooksService(self._http)
|
|
@@ -598,11 +587,6 @@ class AsyncDevRevClient:
|
|
|
598
587
|
"""Access the SLAs service."""
|
|
599
588
|
return self._slas
|
|
600
589
|
|
|
601
|
-
@property
|
|
602
|
-
def survey_responses(self) -> AsyncSurveyResponsesService:
|
|
603
|
-
"""Access the Survey Responses service."""
|
|
604
|
-
return self._survey_responses
|
|
605
|
-
|
|
606
590
|
@property
|
|
607
591
|
def tags(self) -> AsyncTagsService:
|
|
608
592
|
"""Access the Tags service."""
|
|
@@ -328,12 +328,6 @@ from devrev.models.slas import (
|
|
|
328
328
|
SlasUpdateResponse,
|
|
329
329
|
SlaTrackerStatus,
|
|
330
330
|
)
|
|
331
|
-
from devrev.models.survey_responses import (
|
|
332
|
-
SurveyResponse,
|
|
333
|
-
SurveyResponsesListMode,
|
|
334
|
-
SurveyResponsesListRequest,
|
|
335
|
-
SurveyResponsesListResponse,
|
|
336
|
-
)
|
|
337
331
|
from devrev.models.sync import (
|
|
338
332
|
ExternalRef,
|
|
339
333
|
StagedInfo,
|
|
@@ -705,11 +699,6 @@ __all__ = [
|
|
|
705
699
|
"QuestionAnswersUpdateRequest",
|
|
706
700
|
"QuestionAnswersUpdateResponse",
|
|
707
701
|
"QuestionAnswersDeleteRequest",
|
|
708
|
-
# Survey Responses
|
|
709
|
-
"SurveyResponse",
|
|
710
|
-
"SurveyResponsesListMode",
|
|
711
|
-
"SurveyResponsesListRequest",
|
|
712
|
-
"SurveyResponsesListResponse",
|
|
713
702
|
# Recommendations
|
|
714
703
|
"MessageRole",
|
|
715
704
|
"ChatMessage",
|
|
@@ -96,48 +96,6 @@ class Work(DevRevResponseModel):
|
|
|
96
96
|
actual_close_date: datetime | None = Field(default=None, description="Actual close date")
|
|
97
97
|
custom_fields: dict[str, Any] | None = Field(default=None, description="Custom fields")
|
|
98
98
|
external_ref: str | None = Field(default=None, description="External reference")
|
|
99
|
-
account: dict[str, Any] | str | None = Field(
|
|
100
|
-
default=None,
|
|
101
|
-
description="Account associated with the ticket/work, when returned by the API",
|
|
102
|
-
)
|
|
103
|
-
rev_org: dict[str, Any] | str | None = Field(
|
|
104
|
-
default=None,
|
|
105
|
-
description="Rev organization associated with the ticket/work",
|
|
106
|
-
)
|
|
107
|
-
sentiment: dict[str, Any] | str | None = Field(
|
|
108
|
-
default=None,
|
|
109
|
-
description="Current ticket sentiment, when returned by the API",
|
|
110
|
-
)
|
|
111
|
-
sentiment_summary: dict[str, Any] | str | None = Field(
|
|
112
|
-
default=None,
|
|
113
|
-
description="Structured or textual sentiment summary",
|
|
114
|
-
)
|
|
115
|
-
sentiment_modified_date: datetime | None = Field(
|
|
116
|
-
default=None,
|
|
117
|
-
description="When ticket sentiment was last modified",
|
|
118
|
-
)
|
|
119
|
-
sla_summary: dict[str, Any] | None = Field(default=None, description="Ticket SLA summary")
|
|
120
|
-
needs_response: bool | None = Field(
|
|
121
|
-
default=None,
|
|
122
|
-
description="Whether the ticket needs a customer response",
|
|
123
|
-
)
|
|
124
|
-
channels: list[dict[str, Any] | str] | None = Field(
|
|
125
|
-
default=None,
|
|
126
|
-
description="Channels associated with the ticket",
|
|
127
|
-
)
|
|
128
|
-
source_channel: dict[str, Any] | str | None = Field(
|
|
129
|
-
default=None,
|
|
130
|
-
description="Source channel that created the ticket",
|
|
131
|
-
)
|
|
132
|
-
group: dict[str, Any] | str | None = Field(
|
|
133
|
-
default=None,
|
|
134
|
-
description="Group associated with the work item",
|
|
135
|
-
)
|
|
136
|
-
is_frozen: bool | None = Field(default=None, description="Whether the work item is frozen")
|
|
137
|
-
visibility: dict[str, Any] | str | None = Field(
|
|
138
|
-
default=None,
|
|
139
|
-
description="Work item visibility, when returned by the API",
|
|
140
|
-
)
|
|
141
99
|
|
|
142
100
|
|
|
143
101
|
class WorkSummary(DevRevResponseModel):
|
|
@@ -38,7 +38,6 @@ from devrev.services.rev_orgs import AsyncRevOrgsService, RevOrgsService
|
|
|
38
38
|
from devrev.services.rev_users import AsyncRevUsersService, RevUsersService
|
|
39
39
|
from devrev.services.search import AsyncSearchService, SearchService
|
|
40
40
|
from devrev.services.slas import AsyncSlasService, SlasService
|
|
41
|
-
from devrev.services.survey_responses import AsyncSurveyResponsesService, SurveyResponsesService
|
|
42
41
|
from devrev.services.tags import AsyncTagsService, TagsService
|
|
43
42
|
from devrev.services.timeline_entries import (
|
|
44
43
|
AsyncTimelineEntriesService,
|
|
@@ -113,9 +112,6 @@ __all__ = [
|
|
|
113
112
|
# SLAs
|
|
114
113
|
"SlasService",
|
|
115
114
|
"AsyncSlasService",
|
|
116
|
-
# Survey Responses
|
|
117
|
-
"SurveyResponsesService",
|
|
118
|
-
"AsyncSurveyResponsesService",
|
|
119
115
|
# Tags
|
|
120
116
|
"TagsService",
|
|
121
117
|
"AsyncTagsService",
|
|
@@ -147,21 +147,6 @@ class WorksService(BaseService):
|
|
|
147
147
|
response = self._post("/works.get", request, WorksGetResponse)
|
|
148
148
|
return response.work
|
|
149
149
|
|
|
150
|
-
def get_raw(self, id: str) -> dict[str, Any]:
|
|
151
|
-
"""Get the raw API payload for a work item.
|
|
152
|
-
|
|
153
|
-
Use this supported escape hatch when the DevRev API returns fields that
|
|
154
|
-
are not yet represented on the typed :class:`Work` model.
|
|
155
|
-
|
|
156
|
-
Args:
|
|
157
|
-
id: Work item ID
|
|
158
|
-
|
|
159
|
-
Returns:
|
|
160
|
-
Raw ``/works.get`` response payload.
|
|
161
|
-
"""
|
|
162
|
-
request = WorksGetRequest(id=id)
|
|
163
|
-
return self._post("/works.get", request)
|
|
164
|
-
|
|
165
150
|
def list(
|
|
166
151
|
self,
|
|
167
152
|
*,
|
|
@@ -454,11 +439,6 @@ class AsyncWorksService(AsyncBaseService):
|
|
|
454
439
|
response = await self._post("/works.get", request, WorksGetResponse)
|
|
455
440
|
return response.work
|
|
456
441
|
|
|
457
|
-
async def get_raw(self, id: str) -> dict[str, Any]:
|
|
458
|
-
"""Get the raw API payload for a work item."""
|
|
459
|
-
request = WorksGetRequest(id=id)
|
|
460
|
-
return await self._post("/works.get", request)
|
|
461
|
-
|
|
462
442
|
async def list(
|
|
463
443
|
self,
|
|
464
444
|
*,
|
|
@@ -249,6 +249,7 @@ from devrev_mcp.tools import slas as _slas_tools # noqa: E402, F401
|
|
|
249
249
|
from devrev_mcp.tools import tags as _tags_tools # noqa: E402, F401
|
|
250
250
|
from devrev_mcp.tools import timeline as _timeline_tools # noqa: E402, F401
|
|
251
251
|
from devrev_mcp.tools import users as _users_tools # noqa: E402, F401
|
|
252
|
+
from devrev_mcp.tools import webhooks as _webhooks_tools # noqa: E402, F401
|
|
252
253
|
from devrev_mcp.tools import works as _works_tools # noqa: E402, F401
|
|
253
254
|
|
|
254
255
|
# Beta tools (only if beta tools are enabled)
|